2014-11-03 77 views
0

我有兩個單選按鈕和一個文本輸入。我希望文本輸入所需的其中一個無線電被驗證。除非選中,否則我可以禁用文本輸入字段,但我認爲先允許文本輸入的用戶會更直觀,如果他們不選擇收音機,則只會出現錯誤。JQuery驗證 - 文本輸入所需的單選按鈕

該表格讓我回想到無線電是必需的錯誤,但我不希望遠程檢查踢入,除非選擇其中一個單選按鈕。

因此,這裏是我有什麼...
JQuery的:

jQuery("#modalform").validate({ 
    onkeyup: false, 
    onfocusout: false, 
    rules: { 
     'register_domain[]': { 
      required: true    
     }, 
     chosen_domain: { 
      required: true, 
      minlength: 4, 
      remote: { 
       url: "check.php", 
       type: "post", 
       data: { 
        register_domain: function() { 
         return jQuery('input[name="register_domain[]"]'); 
        } 
       } 
      } 
     } 
     }, 
    messages: { 
     'register_domain[]': { 
      required: "Choose one" 
     }, 
     chosen_domain: { 
      required: "Required input", 
      minlength: jQuery.validator.format("Please, at least {0} characters are necessary"), 
      remote: jQuery.validator.format("Invalid domain name: {0}") 
     } 
    } 
}); 

表單域:

<label class="radio-inline"> 
    <input type="radio" name="register_domain[]" id="own_domain" value="owned"> Own Domain 
</label> 
<label class="radio-inline"> 
    <input type="radio" name="register_domain[]" id="new_domain" value="new"> Register Domain 
</label> 
<label for="register_domain[]" class="error" style="display:none;">Please choose one.</label> 
<input type="text" size="50" placeholder="www." id="inputDomain" name="chosen_domain" class="form-control required" required="required"> 
+0

主要問題:什麼是不工作? – 2014-11-03 03:56:02

+0

什麼不起作用,即使單選按鈕未被選中,遠程方法也會激活。 – 2014-11-03 07:09:13

回答

2

報價OP

「除非選中某個單選按鈕,否則我不希望遠程檢查啓動。」

可以使用the rules('add') and rules('remove') methods外部change處理程序中切換remote規則...

$('input[name="register_domain[]"]').on('change', function() { 
    if ($(this).val() == "owned") { 
     $('input[name="chosen_domain"]').rules('remove', 'remote'); 
    } else { 
     $('input[name="chosen_domain"]').rules('add', { 
      remote: { 
       url: "check.php", 
       type: "post", 
       data: { 
        register_domain: function() { 
         return jQuery('input[name="register_domain[]"]'); 
        } 
       } 
      } 
     }); 
    } 
}); 
+0

謝謝Sparky,我會在我回到電腦後試試這個。 – 2014-11-03 07:10:01

+0

@JamesShaver,他很火,:)他的代碼肯定會有效:) – 2014-11-03 07:14:55

+0

完美的作品,謝謝! – 2014-11-03 09:20:55