Frage

Ich mag wirklich die jQuery Validierung Plugin in meiner ASP.NET Web Forms-Anwendung (nicht MVC) verwenden. Ich finde es einfacher als asp Hinzufügen von Validatoren überall und Einstellen des Kontrollfeldes auf alle von ihnen zu validieren.

Ich habe gerade ein paar Probleme, sowohl wenn die Klasse wie dieser class = „required E-Mail“ -Einstellung, die ich denke, etwas mit mit einem Formular-Tag innerhalb des Hauptform-Tages zu tun.

ich auch auf Probleme stoßen, wenn die jquery Validieren mit den Namen zu nennen, die in einer ASP-Steuerung verstümmelt werden

// validate signup form on keyup and submit
$("#signupForm").validate({
    rules: { 
        username: {
            required: true,
            minlength: 2
        }, },
    messages: { 
        username: {
            required: "Please enter a username",
            minlength: "username at least 2 characters"
        }, 
    }.

.......

        <p>
            <label for="username">
                Username</label>
            <input id="username" name="username" />
        </p>

, weil diese

<asp:TextBox ID="tbUsername"  runat="server"></asp:TextBox>

rendert als

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" />

und mangles den Namen. Ich kann die ClientID mit <%=tbUsername.ClientID %>but bekommen, die nicht mit Client funktioniert

Hat jemand keinen Erfolg hatte die jQuery-Validator-Plugin mit asp.net verwenden? Wenn ja, was über mehrere Formen ähnlich wie mit separaten Validierungsgruppen mit?

War es hilfreich?

Lösung

Sie können die Rules-Funktion hinzufügen, aber im Grunde ist hier was Sie tun können:

jQuery(function() {
    // You can specify some validation options here but not rules and messages
    jQuery('form').validate(); 
    // Add a custom class to your name mangled input and add rules like this
    jQuery('.username').rules('add', { 
        required: true, 
        messages: { 
            required: 'Some custom message for the username required field' 
        } 
    });
});

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" class="username" />

Auf diese Weise keine Notwendigkeit, über die crappy Identifikatoren durch den Webforms Motor erzeugen Sorgen zu machen.

Andere Tipps

Hier sind Beispiele für die Verwendung von jQuery Validation-Plugin mit WebForms und emuliert das Konzept der Validierung Gruppen mit ihm . Es funktioniert eigentlich ziemlich gut, wenn Sie ein paar Fragen glätten.

$("#signupForm").validate({
        rules: { 
                <%= tbUsername.UniqueID %>: {
                        required: true,
                        minlength: 2
                }, },
        messages: { 
                <%= tbUsername.UniqueID %>: {
                        required: "Please enter a username",
                        minlength: "username at least 2 characters"
                }, 
        });

<asp:TextBox ID="tbUsername" runat="server"></asp:TextBox>

Sie können xVal.webForms hier überprüfen: http://xvalwebforms.codeplex.com/

geprüft was Darin Dimitrov sagte und es funktioniert perfekt, aber wenn Sie nicht über eine bestimmte Klasse zu jedem Ihrer Felder einstellen möchten, können Sie jQuery Selektoren verwenden:

$('form').validate();
$('input[id$=Username]').rules('add', { 
    required: true, 
    messages: { 
        required: 'Some custom message for the username required field' 
    } 
});

<input name="ctl00$ContentPlaceHolder1$tbUsername" type="text" id="ctl00_ContentPlaceHolder1_tbUsername" />

Die beste Lösung ist die Verwendung "<% = tbUsername.UniqueID%>" statt tbUsername in jQuery Regeln.

$("#signupForm").validate({
rules: { 
    "<%=tbUsername.UniqueID %>": {
        required: true,
        minlength: 2
    }, },
messages: { 
    "<%=tbUsername.UniqueID %>": {
        required: "Please enter a username",
        minlength: "username at least 2 characters"
    }, 
}.

Ich gab vor kurzem eine Patch-Datei für xVal.WebForms, die die vielfältigen Formen Ausgabe Weiterleitung auf der bekannten ASP.Net Validierung Gruppe aufgelöst wird. Dieser Patch unterstützt auch die ASP.Net Causes Eigenschaft.

Yo kann darüber lesen Sie hier: http://cmendible.blogspot.com/

Eine gute Möglichkeit, dies zu tun ist, zu verwenden:

<% = textbox.Name%> oder <% = textbox.ClientId%> , wenn Sie benötigen einen Server Artikel verweisen.

d.

var phoneNumb = $('#<%= tPhone.ClientID %>').val(); 

oder

$("#signupForm").validate({
        rules: { 
                <%= username.Name %>: {
                        required: true,
                        minlength: 2
                }, },
        messages: { 
                <%= username.Name %>: {
                        required: "Please enter a username",
                        minlength: "username at least 2 characters"
                }, 
        }.

.......

Sharepoint 2010 Ich fand mit verschiedenen Benutzersteuerelemente wie Ansichten zu laden (über Ajax), dass dies funktioniert, wenn Sie Javascript in eine Bibliothek zu bewegen und kann nicht Server-Tags für die Steuerung IDs wie folgt verwenden:

z #<%= tPhone.ClientID %>

$('input[id$=tPhone]').rules('add', 
{      
 required: true,      
 messages: 
 {          
  required: 'Some custom message for the username required field'      
 }  
});

Im Anschluss an diese, wenn Sie dynamisch eine Benutzersteuerung über Ajax geladen werden, dann können Sie nicht $ (document) verwenden .ready Sie haben die jQuery in einer Funktionsbibliothek verkapseln, wenn sein auf dem User Control an (Server Side Event) Seite seine feinen laden, aber in dem Szenario, sein über Ajax mit dem Update-Panel es tanzt nicht geladen.

Ich habe nicht Laden usercontrols über jQuery noch versucht, das sieht schwer und erscheint wenn auch vielleicht etwas schneller oder nicht die ganze Seite zu laden.

Tests Ladetechniken Vergleich zeigten der Update-Panel, so schnell war und resultierte in den gleichen oder kleineren Seitengrößen als andere Techniken und im Grunde geladen schneller oder viel mehr Daten als schnell oder schneller.

Ich empfehle, mit jQuery.simple.validator, ist es einfach, lightweigh und anpassbare Validator kompatibel mit asp.net Web-Formularen, denn im Grunde kann es durchführen Validierungen in jedem Behälter, nicht nur

https://github.com/v2msoft/jquery.simple.validator

Ich empfehle Ihnen das Plugin zu überprüfen und die Dokumentation. Verbrauch:

<script type="text/javascript" src="/Content/js/jquery-plugins/jquery.simple.validator.js"></script>

<div id="container">
    <!-- REQUIRED FIELD -->
    <label>Required Field: </label><br/>
    <input type="text" id="required_field_control" data-required data-required-msg="Field is required" /><br /><br/>

    <input type="button" value="Validate" onclick='javascript:validate();' />
</div>


<script type="text/javascript">
    function validate() {
        $("#container").initialize();
        var ok = $("#container").validate();
        if (!ok)  alert("There are errors");
        else alert("Form is ok");
    }
</script

Die Information in diesem Artikel geführt mir Control.ClientID zu verwenden, wenn mit jQuery für ein Spiel ... Sehr nützliche Informationen ...

suchen
<label for="<%= tbName.ClientID %>">Name</label>
<input id="cphBody_tbName" runat="server" .../>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top