Ich habe die folgende Ansicht:Unauffällig Validierung ignoriert Daten-val-Attribute, aber mit Klasse arbeiten = „erforderlich“
@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>
}
Mit dem folgenden JavaScript, die in jeder Sekunde auf einem Timer läuft:
$("form").validate();
if ($("form").valid()) {
//...
}
generiert die folgende html für den Textbereich Element (das einzige Element, um die Validierung):
<textarea
data-val="true"
data-val-required="The Expression field is required."
cols="20" rows="2"
id="Expression" name="Expression"
spellcheck="false">
</textarea>
die Das Problem ist, dass die Validierung nichts bewirkt, es sei denn, ich verwende class = "required" manuell mit Browser-Tools. Wenn ich dies tue funktioniert die Validierung und die Fehlermeldung "Das Feld Ausdruck ist erforderlich" wird angezeigt. Um genau zu sein "$ (" form "). Valid()" gibt immer true zurück, auch wenn textarea leer ist. Da ich Anotationen verwende, die automatisch die Data-Val-Attribute generieren, würde ich mich auf diese verlassen. Was mache ich falsch?
FYI aussehen mein Skript Refs wie folgt aus:
<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" ...
in Tritt beide Chrome und IE9, mein Doctype ist –
Ist Ihr Formular mit der ID '# paserForm' versehen? Außerdem sollte ASP.NET MVC "validate" für Sie aufrufen, Sie sollten es nicht selbst aufrufen. –
Ja ist es, aber in der Tat läuft der eigentliche JS-Code einfach auf $ ("form"), explizit aufrufend ParserForm war nur für einen Test, um zu sehen, ob es etwas änderte. Gleiches gilt für .validate() –