Jquery 验证规则是否可以根据条件更改
Can the rules of Jquery validation be changed on condition
是否可以更改 jquery 验证规则。
问题是 SSN,一个有效的 9 位代码正在被重新格式化以包含连字符,然后使其成为 11 个字符并且无法通过最大长度验证,即使它绝对是我 wanted.If,我没有maxlength的验证,用户可以输入超过9位数字并且不会发生格式化。
我有点面临 catch 22 的情况我 think.Its 与 cntact 号码相同,它是 10 位数字,但是格式有连字符和括号然后变成 13 characters.This 绝对是 fine.The 要求类似于 that.But 格式化后验证失败,表单未提交。
如果我可以更改规则或者你们有更好的解决方案,请告诉我。
代码:
$("#ProviderDetailsForm").validate({
onfocusout: function(element, event) {
this.element(element);
},
rules:
{
SSN: { required: true, minlength :9,maxlength: 9, digits: true },
ContactNumber: { required: true, minlength: 10,maxlength:10, digits: true },
},
messages: {
SSN: {
required : "Please enter your SSN",
minlength : "Invalid SSN(9 Digits atleast)",
maxlength : "Invalid SSN(9 Digits only)"
},
ContactNumber: {
required : "Please enter your Contact Number",
minlength: "Enter a 10 digit contact number",
maxlength: "Enter a 10 digit contact number"
},
}
});
HTML:
<body>
<div class="container">
<form class="form-horizontal" role="form" id="ProviderDetailsForm" method="post">
<div class="form-group">
<label class="col-sm-2 control-label labelfont">SSN:</label>
<div class="col-sm-6">
<input type="text" class="form-control" placeholder="Enter the SSN" id="SSN" name="SSN" data-bind="value: SSN" onkeypress="return onlyNumbers(event);" maxlength="11" />
</div>
<label class="col-sm-4 labelfont errorMsg" id="Err_SSN">Enter the SSN</label>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">CONTACT NUMBER:</label>
<div class="col-sm-6">
<input type="text" class="form-control" data-bind="value: ContactNumber" name="ContactNumber" placeholder="Enter the Contact Number" id="ContactNumber" onkeypress="return onlyNumbers(event);" maxlength="13" />
</div>
<label class="col-sm-4 labelfont errorMsg" id="Err_ContactNum">Enter the Contact Number</label>
</div>
<div class="form-group">
<button type="submit" id="Submit" class="btn btn-primary col-sm-1 col-sm-offset-4">Submit</button>
<button type="reset" id="Reset" class="btn btn-primary col-sm-1">Reset</button>
</div>
</form>
</div>
我已附上 fiddle 我面临的问题。
http://jsfiddle.net/dcz31arf/6/ ... Tab out 进行格式化。
我确实在 tab out 上尝试了以下代码。
$("#SSN").rules("remove", { maxlength:9 });
$("#SSN").rules("add", { maxlength: 11 });
这没有用。
只有在添加连字符时,您的验证器才能包含数字。如果你只是想 erm,屏蔽输入,只需使用 jQuery 输入屏蔽插件。例如,社交的 this plugin 将如下所示:
<input data-inputmask="'mask': '999-99-9999'" />
掩码将确保适当的长度和格式。您当然需要更改规则中的长度验证器。
否则您可能需要创建一个 custom (regex) validator method.
是否可以更改 jquery 验证规则。
问题是 SSN,一个有效的 9 位代码正在被重新格式化以包含连字符,然后使其成为 11 个字符并且无法通过最大长度验证,即使它绝对是我 wanted.If,我没有maxlength的验证,用户可以输入超过9位数字并且不会发生格式化。
我有点面临 catch 22 的情况我 think.Its 与 cntact 号码相同,它是 10 位数字,但是格式有连字符和括号然后变成 13 characters.This 绝对是 fine.The 要求类似于 that.But 格式化后验证失败,表单未提交。
如果我可以更改规则或者你们有更好的解决方案,请告诉我。
代码:
$("#ProviderDetailsForm").validate({
onfocusout: function(element, event) {
this.element(element);
},
rules:
{
SSN: { required: true, minlength :9,maxlength: 9, digits: true },
ContactNumber: { required: true, minlength: 10,maxlength:10, digits: true },
},
messages: {
SSN: {
required : "Please enter your SSN",
minlength : "Invalid SSN(9 Digits atleast)",
maxlength : "Invalid SSN(9 Digits only)"
},
ContactNumber: {
required : "Please enter your Contact Number",
minlength: "Enter a 10 digit contact number",
maxlength: "Enter a 10 digit contact number"
},
}
});
HTML:
<body>
<div class="container">
<form class="form-horizontal" role="form" id="ProviderDetailsForm" method="post">
<div class="form-group">
<label class="col-sm-2 control-label labelfont">SSN:</label>
<div class="col-sm-6">
<input type="text" class="form-control" placeholder="Enter the SSN" id="SSN" name="SSN" data-bind="value: SSN" onkeypress="return onlyNumbers(event);" maxlength="11" />
</div>
<label class="col-sm-4 labelfont errorMsg" id="Err_SSN">Enter the SSN</label>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">CONTACT NUMBER:</label>
<div class="col-sm-6">
<input type="text" class="form-control" data-bind="value: ContactNumber" name="ContactNumber" placeholder="Enter the Contact Number" id="ContactNumber" onkeypress="return onlyNumbers(event);" maxlength="13" />
</div>
<label class="col-sm-4 labelfont errorMsg" id="Err_ContactNum">Enter the Contact Number</label>
</div>
<div class="form-group">
<button type="submit" id="Submit" class="btn btn-primary col-sm-1 col-sm-offset-4">Submit</button>
<button type="reset" id="Reset" class="btn btn-primary col-sm-1">Reset</button>
</div>
</form>
</div>
我已附上 fiddle 我面临的问题。
http://jsfiddle.net/dcz31arf/6/ ... Tab out 进行格式化。
我确实在 tab out 上尝试了以下代码。
$("#SSN").rules("remove", { maxlength:9 });
$("#SSN").rules("add", { maxlength: 11 });
这没有用。
只有在添加连字符时,您的验证器才能包含数字。如果你只是想 erm,屏蔽输入,只需使用 jQuery 输入屏蔽插件。例如,社交的 this plugin 将如下所示:
<input data-inputmask="'mask': '999-99-9999'" />
掩码将确保适当的长度和格式。您当然需要更改规则中的长度验证器。
否则您可能需要创建一个 custom (regex) validator method.