2012-08-10 13 views
5

tengo los próximos:validación discreto haciendo caso omiso de los atributos de datos-val, pero trabajar con class = "required"

@using (Html.BeginForm()) 
{ 
    <div class="left-column"> 
     @Html.LabelFor(m => m.Expression) 
     @Html.TextAreaFor(m => m.Expression, new { @spellcheck = "false" }) 
     @Html.EditorFor(m => m.Sku) 
    </div> 
} 

Con el siguiente JavaScript que se ejecuta cada segundo en un temporizador:

$("form").validate(); 

if ($("form").valid()) { 
    //... 
} 

genera el siguiente html para el elemento de área de texto (el elemento que sólo necesitan de validación):

<textarea 
    data-val="true" 
    data-val-required="The Expression field is required." 
    cols="20" rows="2" 
    id="Expression" name="Expression" 
    spellcheck="false"> 
</textarea> 

el El problema es que la validación no hace nada, a menos que agregue manualmente class = "required" usando las herramientas del navegador. Si hago esto, la validación funciona y se muestra el mensaje de error "Se requiere el campo Expresión". Para ser preciso, "$ (" form "). Valid()" siempre devuelve verdadero incluso cuando textarea está vacío. Dado que estoy usando anotaciones que generan automáticamente los atributos data-val, me gustaría confiar en ellos. ¿Qué estoy haciendo mal?

FYI mis referencias de script tener este aspecto:

<script src="/Scripts/modernizr-2.0.6-development-only.js" ... 
<script src="/Scripts/jquery-1.6.2.js" ... 
<script src="/Scripts/Parser.js" ... 
<script src="/Scripts/jquery.unobtrusive-ajax.js" ... 
<script src="/Scripts/jquery.validate.js" ... 
<script src="/Scripts/jquery.validate.unobtrusive.js" ... 
+0

se produce tanto en Chrome e IE9, mi tipo de documento es –

+0

¿Su formulario tiene el ID '# paserForm'? Además, ASP.NET MVC debería llamar 'validate', no debe llamarlo usted mismo. –

+0

Sí, pero de hecho, el código JS real se ejecuta simplemente en $ ("formulario"), explícitamente llamando a parserForm era solo una prueba para ver si cambiaba algo. Lo mismo ocurre con .validate() –

Respuesta

1

¿Ha habilitado JavaScript no obstructivo y cliente de validación para .NET?

intente configurar lo siguiente en su punto de vista:

@{ Html.EnableUnobtrusiveJavaScript(true); 
    Html.EnableClientValidation(true); 
    Html.ValidationSummary(true); 
} 

También se puede establecer que en todo el sitio en su web.config

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+2

Tengo! Bueno, no recuerdo haberlo hecho, pero está ahí, así que supongo que NuGet lo hizo. Aún así, esta es la primera sugerencia en casi un mes para un problema que aún no se ha resuelto, ¡así que gracias por eso! –

Cuestiones relacionadas