Почему?
Поскольку jquery.validate включается при отправке формы путем кражи события отправки этой формы.И так как обе кнопки отправки, проверка выполняется для них обоих.
как это исправить?
Добавить class="cancel"
к кнопке, которую вы хотите исключить извалидация, которая даст указание плагину jQuery.validate не запускать валидацию:
<input type="image" src="/Content/images/btn_register.jpg" class="LFR_btn cancel" id="btnRegister" />
<input type="image" src="/Content/images/btn_register.jpg" class="LFR_btn cancel" id="btnRegister" />
Это описано в документации .
Очевидно, все это относится только к клиентупроверка стороны.На сервере это совсем другая история.Если вы хотите отключить проверку при нажатии какой-либо кнопки, вам сначала нужно будет узнать, какая кнопка была нажата.Это может произойти путем присвоения первой кнопке атрибута name
, а затем проверки на сервере значения этого параметра из запроса:
<button type="submit" class="LFL_btn" name="validate" value="validate">Validate</button>
, а затем внутри действия вашего контроллера проверьте, использовалась ли эта кнопка дляотправьте форму и примените валидацию только в этом случае:
[HttpPost]
public ActionResult Foo(string validate)
{
if (!string.IsNullOrEmpty(validate))
{
// the Validate button was clicked:
var model = new MyViewModel();
if (!TryUpdateModel(model))
{
// there were validation errors => redisplay the view
return View(model);
}
// validation went fine => do some processing...
}
else
{
// the image button was clicked
// do some other processing ...
}
}