根据其他字段验证字段的格式

时间:2012-11-30 16:33:35

标签: jquery validation

如果上面的选项字段是状态DE,

想检查驾驶执照是否正好是6个数字 下面的jsfiddle代码

http://jsfiddle.net/THKez/1/

<form name="clientdetails_form" id="clientdetails_form" method="POST" action="xxxx.php">  

<p>
<label for="state">State</label>
<select type="text" name="state" >
<option value="NY">NY</option>
<option value="DE">DE</option></select>
</p>

<p>
<label for="LicenseN"><em>*</em>License #</label>
<input id="ClientLicensenNum"  name="ClientLicensenNum" type="text" value="" >
</p>    

    <input type="submit" value="submit"  >    

</form>

感谢

2 个答案:

答案 0 :(得分:0)

在更改下拉列表时,如果状态为DE且长度为6,则执行某些操作。 Fiddle

$(document).ready(function() {
    $('select').change(function() {
        var state = $(this).val();
        var license = $('#ClientLicensenNum').val();
        if (state == "DE" && license.length == 6) {
            console.log('Do something');
        }
    });
});​

答案 1 :(得分:0)

创建一个自定义方法来处理包含6个字符的DE许可证:

jQuery.validator.addMethod("DELicense", function(value, element) {
    if (this.optional(element)) {
        return true;
    }

    if ($('select[name="state"] option:selected').val() == 'DE') {
        return $(element).val().match(/^\d{6}$/);
    } else {
        return true;
    }
}, "DE Licenses must be 6 numbers");

当您调用validate时,请指定当您的select设置为DE时必须使用此自定义类型:

$("#clientdetails_form").validate({
    rules: {
        ClientLicensenNum: {
            DELicense: true,
            required: true
        }
    }
});​

在此处查看此行动:http://jsfiddle.net/ryleyb/THKez/3/

EDITTED 让它变得更复杂 - 结果是自定义规则无法像required那样使用dependency-expressions