2008-09-14 15 views
14

Después de intentar evitar JavaScript durante años, Iv comenzó a utilizar JQuery para validation en MVC asp.net, ya que no parece haber una forma oficial de hacer la validación, Iv se sorprendió de lo bueno que es JQuery.MVC.net JQuery Validation

En primer lugar, ¿hay alguna manera de conseguir que intellisense funcione para JQuery y su complemento de validación, para que no tenga que aprender la API?

En segundo lugar, ¿cómo puedo crear un resumen de validación de esto, actualmente anexa el error a la derecha del cuadro de texto .:

<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> 

He intentado añadir esto a la secuencia de comandos:

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

y esto a la html:

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

Pero esto no funcionó.

Respuesta

11

Intente especificar tanto un contenedor como un contenedor de etiquetas en sus opciones. También agregué display: none; al estilo de error-container para que jquery decida cuándo mostrarlo.

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> 

Guión:

<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> 

que debería funcionar.

+1

Esto es muy útil, gracias. ¿Hay alguna razón para no escribir '$ ('div.error-container ul')' en lugar de '$ (" ul ", $ ('div.error-container'))'? –

+0

@thedeeno Necesitamos un extra, justo antes del final de "}" – Adrian

+1

@ Dev11 no, pero a partir de ecma5 está totalmente bien. Ver esta respuesta http://stackoverflow.com/a/7246662/1946 –

4

Hay una revisión de Visual Studio 2008 para JQuery IntelliSense en VS2008. Esto podría haber sido incluido con SP1 también.

1

respecto a intellisense para jquery (y otros complementos): para tener intellisense completo en sus propios archivos de script, solo incluya la siguiente línea en la parte superior de su archivo .js una vez por cada archivo que desee desde Intellisensee:

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

simple, pero muy útil =)

Cuestiones relacionadas