исключить кнопку из проверки - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть форма с валидаторами и 2 кнопками внутри формы:

<input type="submit" class="LFL_btn" value="" />
<input type="image" src="/Content/images/btn_register.jpg" class="LFR_btn" id="btnRegister" />

но валидатор работает и для второй кнопки тоже. Почему и как это исправить?

1 Ответ

0 голосов
/ 05 февраля 2012

Почему?

Поскольку 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 ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...