[英]jquery validation with regular expression submit issue
以下代码有什么问题? 显示错误消息,但表单已提交。 是由于更新面板,因为控件位于asp.net更新面板内部。
$.validator.addMethod("regex",
function (value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
}
);
$("#mainForm").validate({
rules: {
"<%= txtContractName.UniqueID %>": {
required: true,
regex: /^[2-9]\d{2}-\d{3}-\d{4}$/
}
},
messages: {
"<%= txtContractName.UniqueID %>": {
regex: "invalid format"
}
},
onsubmit: false,
});
我解决了问题,但又弹出了另一个问题。 第二次更改下拉值时不起作用。 好像它只设置了fixedPortion一次。
<script>
function fn_init() {
$.validator.addMethod("regex", function (value, element, regexp) {
var re = new RegExp(regexp);
//alert(regexp);
// return this.optional(element) || What is this line doing
//alert(re.test(value));
return re.test(value); // Just test that it passes regex
}, '');
//^SPI-[\da-zA-Z''-'\s]{1,10} [a-zA-Z''-'\s]{1,20} \d{4}$
var fixedPortion = new RegExp("^SPI-" + $("#ddlLOB option:selected").text() + " [\\da-zA-Z''-'\\s]{1,20} \\d{4}$");
// alert(fixedPortion);
$("#mainForm").validate({
rules: {
"<%= txtContractName.UniqueID %>": {
required: true,
regex:fixedPortion
// regex: /^[2-9]\d{2}-\d{3}-\d{4}$/
}
},
messages: {
"<%= txtContractName.UniqueID %>": {
regex: "invalid format"
}
},
showErrors: function (errorMap, errorList) {
// Clean up any tooltips for valid elements
$.each(this.validElements(), function (index, element) {
var $element = $(element);
$element.data("title", "") // Clear the title - there is no error associated anymore
.removeClass("validatorCalloutHighlight");
});
// Create new tooltips for invalid elements
$.each(errorList, function (index, error) {
var $element = $(error.element);
$element.addClass("validatorCalloutHighlight");
//$element.tooltip("destroy") // Destroy any pre-existing tooltip so we can repopulate with new tooltip content
// .data("title", error.message)
// .addClass("error")
// .tooltip(); // Create a new tooltip based on the error messsage we just set in the title
});
}
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(onEachRequest);
function onEachRequest(sender, args) {
if ($("#mainForm").valid() == false) {
args.set_cancel(true);
}
}
}
</script>
<script type="text/javascript">
function pageLoad() {
$(function () {
fn_init();
});
}
尝试这个。 我只是删除了onsubmit属性。 我建议您只测试正则表达式,而不要测试它。
$.validator.addMethod("regex", function (value, element, regexp) {
var re = new RegExp(regexp);
var value = $('#txtContractName').val();
// return this.optional(element) || What is this line doing
return re.test(value); // Just test that it passes regex
}, '');
$("#mainForm").validate({
rules: {
"<%= txtContractName.UniqueID %>": {
required: true,
regex: /^[2-9]\d{2}-\d{3}-\d{4}$/
}
},
messages: {
"<%= txtContractName.UniqueID %>": {
regex: "invalid format"
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.