Was ich gerne hätte
Ich möchte die clientseitige Validierung in meiner Ansicht mit einem Ereignis meiner Wahl auslösen. Es könnte "onblur" sein, vielleicht eine andere Schaltfläche, aber etwas anderes als die Schaltfläche "Senden".
relevante Links
So lösen Sie die Validierung aus, ohne einen Senden-Button zu verwenden
Anwenden der unauffälligen Jquery-Validierung auf dynamischen Inhalt in ASP.Net MVC
Was ich probiert habe
Bei einem verschiedenen Ereignis-Listener habe ich die folgenden Methoden ohne Erfolg abgefeuert:
$(selector).validate();
$(selector).valid();
$.validator.unobtrusive.parseDynamicContent(selector);
$.validator.unobtrusive.parse($(selector));
Zusammenfassung
Ich brauche also eine clientseitige Validierung, um ein bestimmtes Ereignis auszulösen (außer beim Senden) und die entsprechenden Validierungsnachrichten anzuzeigen. Ich glaube nicht, dass eine der Markup/Razor-Syntax notwendig ist, da die Client-Validierung beim Senden ausgelöst wird und alle entsprechenden Validierungsnachrichten wie erwartet angezeigt werden.
$('form').valid()
sollte funktionieren. Lassen Sie uns dies beispielhaft erläutern.
Modell:
public class MyViewModel
{
[Required]
public string Foo { get; set; }
}
Regler:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
}
Aussicht:
@model MyViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
}
<div id="validate">Hover here to trigger validation</div>
<script type="text/javascript">
$('#validate').hover(function () {
$('form').valid();
});
</script>
Manuelle Validierung von benutzerdefinierten Nachrichten, die direkt in HTML eingefügt werden
@{using (Html.BeginForm("addBuyOnlinepostA", "BuyOnline", FormMethod.Post, new { @enctype = "multipart/form-data", @id = "form1" }))
{
@Html.ValidationSummary(true)
<div class="row">
<div class="col-sm-10">
Product Qty
<input class="inputs" required type="number" id="price" name="price" placeholder="Enter Price in AED"
data-val="true" data-val-required="Please enter a value" data-val-regex="Please enter a valid number."
data-val-regex-pattern="\d{1,20}" />
<span class="field-validation-valid" data-valmsg-for="price" data-valmsg-replace="true"
style="color: Red;"></span>
</div>
</div>
<input type="button" onclick="$('form').valid()" />
}
}