asp.net-mvc-3 - una - mvc submit button action
.Net Mvc 3 Trigger(que no sea el botón de enviar) Validación no intrusiva (2)
Validación manual de mensajes personalizados inyectados directamente en HTML
@{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()" />
}
}
Lo que me gustaría
Me gustaría activar la validación del lado del cliente en mi vista con un evento de mi elección. Podría ser ''onblur'' tal vez otro botón pero algo más que el botón de enviar.
Enlaces relevantes
Cómo activar la validación sin usar un botón de envío
Aplicación de validación de jquery discreta al contenido dinámico en ASP.Net MVC
Lo que he intentado
Dado un oyente de varios eventos, disparé los siguientes métodos sin suerte:
$(selector).validate();
$(selector).valid();
$.validator.unobtrusive.parseDynamicContent(selector);
$.validator.unobtrusive.parse($(selector));
Resumen
Entonces, necesito la validación del lado del cliente para disparar en un evento dado (que no sea en el envío) y mostrar los mensajes de validación correspondientes. No creo que ninguna de las sintaxis de Markup / Razor sea necesaria ya que los fuegos de validación del cliente en el envío y todos los mensajes de validación correspondientes se muestran como se esperaba.
$(''form'').valid()
debería funcionar. Vamos a ejemplificar.
Modelo:
public class MyViewModel
{
[Required]
public string Foo { get; set; }
}
Controlador:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}
}
Ver:
@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>