2016-05-30 3 views
0

У меня есть форма, которую я проверяю с помощью плагина jQuery Validate, и я бы хотел, чтобы только одно поле было заполнено, а другое - 0 (ноль). Тем не менее, это должно быть обязательно, чтобы один или другой был заполнен.jQuery Подтвердить плагин для одного поля, но не оба

Вот моя текущая форма:

enter image description here

Это моя форма HTML:

<div class="row"> 
      <div class="col-md-6"> 
       <div class="form-group"> 
        <label> <span>Amount to Player</span></label> 
        <input name="AmountToHorse" type="text" class="form-control"> 
       </div> 
      </div> 
      <div class="col-md-6"> 
       <div class="form-group"> 
        <label> <span>Amount to Stable</span></label> 
        <input name="AmountToStable" type="text" class="form-control"> 
       </div> 
      </div> 
     </div> 

Это моя проверка:

$('#reloadForm').validate({ 
         rules: { 

          AmountToHorse: { 
           required: true, 
           number: true 
          }, 
          AmountToStable: { 
           required: true, 
           number: true 
          }, 
         } 
        }); 

Любой ключ, как это сделать что?

+0

Post код проверки и HTML формы. –

+0

Вам нужно будет написать настраиваемое правило с помощью метода '.addMethod()'. Однако, прежде чем переходить к написанию подробного ответа для вас, мне интересно, если у вас есть удовлетворительная помощь по [вашему последнему вопросу об этом плагине] (http://stackoverflow.com/q/37515146/594235)? – Sparky

+0

@Sparky извините забыл принять другой ответ. Готово. Ценю вашу помощь . – VAAA

ответ

0

Чтобы написать специальное правило, необходимо ввести the .addMethod() method, чтобы обеспечить заполнение только одного.

Отрегулировать соответственно ...

$(document).ready(function() { 

    $.validator.addMethod('onlyOne', function(value, element, param) { 
     return this.optional(element) || $('[name="' + param[0] + '"]').is(':blank'); 
    }, "Please fill out only one of these fields"); 

    $('#myform').validate({ 
     rules: { 
      foo: { 
       onlyOne: ["bar"], 
       number: true 
      }, 
      bar: { 
       onlyOne: ["foo"], 
       number: true 
      } 
     } 
    }); 

}); 

Затем используйте blur keyup обработчик для обеспечения сообщения проверки обновить себя на всех полей. Опять же, так как я понятия не имею, есть ли у вас другие поля в этой форме, настройте эти селекторы только для того, что необходимо и нужно.

$('input').on('blur keyup', function() { 
    $('#myform').valid(); // force validation on entire form 
}); 

проверка концепции DEMO: http://jsfiddle.net/e01d5sw7/


EDIT:

Согласно комментариям Op, в то время как поля должны быть заполнены в то же время, одно поле или другое required ...

$.validator.addMethod('onlyOne', function(value, element, param) { 
    return ($(element).is(':filled') && $('[name="' + param[0] + '"]').is(':blank')) || 
    (($('[name="' + param[0] + '"]').is(':filled')) && $(element).is(':blank')); 
}, "Please fill out only one of these fields"); 

DEMO # 2: http://jsfiddle.net/Lnxxgs92/

+0

Работает, но если вы оставите пустое, то и оно пройдет. Нужно заполнить. – VAAA

+0

@VAAA, ваш ОП не сказал * «требуется одно поле из двух» * ... на самом деле вы никогда не упоминали, что что-то было «необходимо». Вы сказали, что хотите * «разрешить одно поле» *, и это именно то, что показывает мой ответ. – Sparky

+0

@VAAA, см. Отредактированный ответ. – Sparky

Смежные вопросы