JQuery验证 - 文本输入所需的单选按钮

时间:2014-11-03 03:31:55

标签: javascript jquery html forms jquery-validate

我有两个单选按钮和一个文本输入。我希望然后验证文本输入所需的其中一个无线电。除非选中,否则我可以禁用文本输入字段,但我认为首先允许文本输入会更直观,只有在他们不选择收音机时才会出错。

该表格给我一个错误,指出需要收音机,但除非选择其中一个收音机按钮,否则我不希望启动远程检查。

所以这就是我所拥有的...... 的 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">

1 个答案:

答案 0 :(得分:2)

引用OP

  

“除非选择了其中一个单选按钮,否则我不希望远程检查启动。”

您可以使用the rules('add') and rules('remove') methods在外部remote处理程序中切换change规则...

$('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[]"]');
                    }
                }
            }
        });
    }
});