2016-02-15 2 views
1

У меня есть простая формаJQuery Validation - пользовательские правила

<form role="form" id="my_form" class="form-horizontal"> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonOne" value="1"> Something 
    </label> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonTwo" value="2"> Something else 
    </label> 
    <label class="radio"> 
     <input type="radio" name="reason[]" id="reasonThree" value="Other"> Other 
    </label> 
    <input type="text" name="reason[]" placeholder="Please specify" id="other" class="form-control"> 
</form> 

Дно радио контролирует ввод текста. Первоначально это скрыто, и я

$('input:radio[name="reason[]"]').change(
    function(){ 
     if ($(this).is(':checked') && $(this).val() == 'Other') { 
      $('#other').css("display", 'block'); 
     } else { 
      $('#other').css("display", 'none'); 
     } 
    } 
); 

Определение правил для радио-кнопок прямо вперед, мне просто нужно, чтобы убедиться, что выбран один. У меня есть несколько вопросов с настраиваемым правилом. По сути, если выбрано reasonThree, мне нужно убедиться, что они что-то вводят в текстовый ввод, который отображается в этот момент. В этот момент я пытаюсь сделать что-то вроде следующего.

jQuery.validator.addMethod('customrule', function() { 
    if($("input[id='reasonFive']:checked")) { 
     if(('#other').val().length == 0) { 
      return false; 
     } else { 
      return true; 
     } 
    } 
    return false; 
}, 'Please input a reason'); 

var validator = $("#my_form").validate({ 
    rules: { 
     'reason[]': { 
      required: true, 
      customRule: true 
     } 
    }, 
    messages: { 
     'reason[]': { 
      required: jQuery.validator.format("Please select an option") 
     } 
    } 
}); 

Если они выбирают последний переключатель, как я могу убедиться, что они что-то вставляют в текстовую область?

Благодаря

+0

Спасибо, если вы добавите в качестве ответа я отметит это правильно. –

ответ

2

Там нет элемента с идентификатором [id='reasonFive']. Попробуйте изменить свой собственный метод, как это: -

$.validator.addMethod("customRule",function(value,element){ 
    if($('#reasonThree').is(':checked')){ 
    return $('#other').val().trim().length>0; 
    }else{ 
    return true; 
    } 
},"Please input a reason"); 

Demo

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