Проверка скрытого поля - программирование
Подтвердить что ты не робот

Проверка скрытого поля

Я использую MVC3 с ненавязчивой проверкой. У меня есть поле, в котором пользователь должен заполнить некоторые данные, а затем нажать кнопку "Поиск". Если поиск не был нажат или пользователь изменил поле ввода после нажатия поиска, форма не может быть отправлена.

Я добавил скрытое поле, которое установлено в true событием click() кнопки и опустошено событием keyup() в поле ввода. Теперь я хотел бы добавить правило проверки, которое требует, чтобы скрытое поле было true, чтобы разрешить отправку.

Желательно, чтобы я использовал ненавязчивую проверку, но если это не работает, это нормально с чем-то, что требует некоторого javascript, если оно не испортит ненавязчивую проверку для остальной части формы.

Следующий фрагмент кода делает именно то, что я хочу, пока не добавлю type="hidden".

<input class="required" id="client-searched" data-val="true" 
  name="ClientSearched" data-val-required="Press search!"/>
<span class="field-validation-valid" data-valmsg-replace="true" 
  data-valmsg-for="ClientSearched"/>
4b9b3361

Ответ 2

У меня была аналогичная проблема, и я использовал этот код для изменения значений по умолчанию в MVC 4:

@Scripts.Render("~/bundles/jqueryval")

<script type="text/javascript">
    $.validator.setDefaults({
        ignore: ""
    })
</script>

Источник: Проверка JQuery

Ответ 3

В некоторых случаях вы хотите, чтобы просто игнорировал проверку на одном или нескольких скрытые поля (не все скрытые поля) в client side, а также вы хотите проверить их и другие скрытые поля в server side. В этих случаях у вас есть атрибуты проверки для всех скрытых полей в ViewModel, и они будут использоваться для проверки формы при ее публикации (server side).

Теперь вам нужен трюк, чтобы просто проверить некоторые скрытые поля на стороне клиента (не все). В этих случаях я рекомендую использовать мой механизм!

Задайте data-force-val как true в целевых скрытых входных тегах. Это наш пользовательский атрибут, который мы используем для обнаружения целевых скрытых входов, которые мы хотим проверить на стороне клиента.

// This hidden input will validate both server side & client side
<input type="hidden" value="" name="Id" id="Id" 
       data-val-required="The Id field is required." 
       data-val="true"
       data-force-val="true">

// This hidden input will validate both server side & client side
<input type="hidden" value="" name="Email" id="Email" 
       data-val-required="The Email field is required." 
       data-val="true"
       data-force-val="true">

// This hidden input just will validate server side
<input type="hidden" value="" name="Name" id="Name" 
       data-val-required="The Neme field is required." 
       data-val="true">

Также вы можете установить data_force-val для своих скрытых входов на jQuery:

$("#Id").attr("data-force-val", true);    // We want validate Id in client side
$("#Email").attr("data-force-val", true); // We want validate Email in client side
$("#Name").attr("data-force-val", false); // We wont validate Name in client side (This line is not necessary, event we can remove it)

Теперь активная data-force-val="true" функциональность с помощью некоторых простых кодов, таких как:

var validator = $("#TheFormId").data('validator');    
validator.settings.ignore = ":hidden:not([data-force-val='true'])";

Примечание: validator.settings.ignore значение по умолчанию :hidden