2008-09-14 17 views
14

Nachdem ich versucht habe, JavaScript seit Jahren zu vermeiden, begann Iv JQuery für validation in MVC asp.net zu verwenden, da es keine offizielle Art der Validierung zu sein scheint, ich war überrascht, wie gut JQuery ist.MVC.net JQuery Validierung

Erstens gibt es einen Weg, um intellisense arbeiten für JQuery und seine Validierung Plugin, so dass ich nicht lernen müssen die API?

Zweitens, wie kann ich eine Validierung Zusammenfassung für diese erstellen, fügt es zur Zeit den Fehler auf der rechten Seite des Textfeld .:

<script type="text/javascript"> 
$().ready(function() { 
$("#CreateLog").validate({ 
     rules: {    
      UserName: { 
       required: true, 
       minLength: 2, 

      } 
     }, 
     messages: { 

      UserName: { 
       required: "Please enter a username", 
       minLength: "Your username must consist of at least 2 characters", 

      } 
     } 
    }); 
}); 
</script> 

<form id="CreateLog" action="Create" method="post" /> 
     <label>UserName</label><br /> 
     <%=Html.TextBox("UserName")%> 
     <br /> 
      <div class="error"> </div> 
     <input type=submit value=Save /> 
     </form> 

Ich habe versucht, diese zu dem Skript:

errorLabelContainer: $("#CreateLog div.error") 

und dies den html:

<div class="error"> </div> 

Aber das hat nicht funktioniert.

Antwort

11

Versuchen Sie in Ihren Optionen einen Wrapper und einen Etikettencontainer anzugeben. Ich habe auch Anzeige hinzugefügt: keine; zum Stil des Fehler-Containers, um jquery entscheiden zu lassen, wann es angezeigt wird.

Html:

<div class="error-container"> 
<ul> 
</ul> 
</div> 
<form id="CreateLog" action="Create" method="post" /> 
<label>UserName</label><br /> 
<%=Html.TextBox("UserName")%> 
<br /> 
<input type=submit value=Save /> 
</form> 

Script:

<script type="text/javascript"> 
$().ready(function() { 
$("#CreateLog").validate({ 
    errorLabelContainer: $("ul", $('div.error-container')), 
    wrapper: 'li', 
    rules: {    
     UserName: { 
      required: true, 
      minLength: 2, 

     } 
    }, 
    messages: { 

     UserName: { 
      required: "Please enter a username", 
      minLength: "Your username must consist of at least 2 characters", 

     } 
    } 
}); 
}); 
</script> 

Das sollte funktionieren.

+1

Dies ist hilfreich, danke. Gibt es einen Grund, nicht '$ ('div.error-container ul')' anstelle von '$ (" ul ", $ ('div.error-container'))' 'zu schreiben? –

+0

@thedeeno Müssen wir extra, in kurz vor Ende von "}" – Adrian

+1

@ Dev11 nein, aber ab ecma5 ist es völlig in Ordnung. Siehe diese Antwort http://stackoverflow.com/a/7246662/1946 –

4

Es gibt einen Visual Studio 2008-Hotfix für JQuery IntelliSense in VS2008. Dies könnte auch mit SP1 gebündelt worden sein.

1

bezüglich intellisense für jquery (und andere Plugins): Um volle Intelligenz in Ihren eigenen Skriptdateien zu haben, fügen Sie einfach die folgende Zeile am Anfang Ihrer .js-Datei einmal für jede Datei ein, aus der Sie intellisensee möchten:

/// <reference path="[insert path to script file here]" /> 

einfach, aber sehr nützlich =)