如何有条件地执行jquery验证?
我正在使用jquery验证插件验证表单如何有条件地执行jquery验证?,jquery,asp.net-mvc,jquery-validate,attributes,Jquery,Asp.net Mvc,Jquery Validate,Attributes,我正在使用jquery验证插件验证表单 rules: { Name: "required", MobileNo: { required: true, minlength: 10, remote: '<%=Url.Action("getClientMobNo", "Clients") %>' }, Address: "required" }, messag
rules: {
Name: "required",
MobileNo: {
required: true,
minlength: 10, remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
},
Address: "required"
},
messages: {
Name: "please provide a client name",
MobileNo: {
required: "Please provide a mobile phone no",
rangelength: jQuery.format("Enter at least {0} characters"),
remote: jQuery.format("This MobileNo is already in use")
},
Address: "please provide client address"
},
规则:{
名称:“必需”,
美孚利诺:{
要求:正确,
minlength:10,远程:“”
},
地址:“必填”
},
信息:{
名称:“请提供客户名称”,
美孚利诺:{
必填:“请提供手机号码”,
rangelength:jQuery.format(“输入至少{0}个字符”),
remote:jQuery.format(“此MobileNo已在使用”)
},
地址:“请提供客户地址”
},
这在添加表单验证上非常有效,但我使用相同的表单进行编辑,他们可以使用相同的手机号码,但我的插件验证mobileno,说已经有一个mobileno。。。但是如何根据条件执行远程属性
MobileNo: {
required: true,
minlength: 10,
if($("#HfId").val() == ""){
remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
}
},
MobileNo:{
要求:正确,
最小长度:10,
如果($(“#HfId”).val()==”){
远程:“”
}
},
这是有效的jquery条件验证语句。。。。如何根据条件跳过远程属性…您将需要一些服务器端。处理编辑或应用其他Url.Action 执行不同的网络操作以管理它正在编辑细节,而不是以相同的方式应用它们,因此mobileno可以是相同的 祝你好运
Edit它是因为服务器端验证而抛出的,还是Jquery在它到达之前就抛出的?好吧,我会这样做 例如,我的php页面是member.php 要添加,请发送一个URL,如member.php?action=add
<?
$action = $_GET['action'];
?>
<script>
$("#frmmember").validate({
rules: {
name: {
<? if($action=='add') { ?>
required: true,
<? } ?>
rangelength: [4, 50] },
email: { required: true, rangelength: [5, 50], email: true },
phone: { required: true, number:true, rangelength: [7, 10] }
},
onkeyup: false
});
</script>
$(“#frmmember”).validate({
规则:{
姓名:{
要求:正确,
rangelength:[4,50]},
电子邮件:{必需:true,rangelength:[5,50],电子邮件:true},
电话:{required:true,number:true,rangelength:[7,10]}
},
onkeyup:false
});
在这种情况下,验证规则required=true仅在url变量
“action”
中有“add”时才适用。使用jquery extend方法怎么样?如果是新记录,则添加远程属性;如果是和正在退出的记录,则添加use和empty对象
rules: {
Name: "required",
MobileNo: $.extend(
{
required: true,
minlength: 10
},
($("#HfId").val() == "")?{remote: '<%=Url.Action("getClientMobNo", "Clients") %>'}:{}
),
Address: "required",
messages: {
Name: "please provide a client name",
MobileNo: {
required: "Please provide a mobile phone no",
rangelength: "Enter at least {0} characters",
remote: "This MobileNo is already in use"
},
Address: "please provide client address"
}
}
规则:{
名称:“必需”,
MobileNo:$.extend(
{
要求:正确,
最小长度:10
},
($(“#HfId”).val()==”)?{remote:}:{}
),
地址:“必填”,
信息:{
名称:“请提供客户名称”,
美孚利诺:{
必填:“请提供手机号码”,
rangelength:“至少输入{0}个字符”,
远程:“此MobileNo已在使用”
},
地址:“请提供客户地址”
}
}
您可以在验证规则初始化后使用强制删除规则
$('yourForm')。验证({
规则:{
名称:“必需”,
美孚利诺:{
要求:正确,
minlength:10,远程:“”
},
地址:“必填”
},
信息:{
名称:“请提供客户名称”,
美孚利诺:{
必填:“请提供手机号码”,
rangelength:jQuery.format(“输入至少{0}个字符”),
remote:jQuery.format(“此MobileNo已在使用”)
},
地址:“请提供客户地址”
}
});
如果($('#HfId').val()!='')
$('MobileNo')。规则('remove','remote');
这样,您就不必将共享的声明性规则与内联逻辑混在一起。即使添加页面上不存在#HfId,它也会自动失效,不会出错(显然也不会删除远程规则),因此它适用于添加和编辑状态。我很惊讶没有人提到过这样做,但我建议使用添加规则方法。创建验证对象后,可以根据需要向对象动态添加规则
if($("#HfId").val() == "") {
$("#MobileNo").rules("add", {
remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
});
}
if($(“#HfId”).val(){
$(“#MobileNo”)。规则(“添加”{
远程:“”
});
}
这样做的好处是,如果在插入新记录时要添加多个规则,则可以将它们全部分组到一个位置。如果逻辑变得更复杂,还可以多次调用add。我更喜欢在需要的时候添加东西,然后调用remove将它们删除。调用
validate()
后执行此操作,可能是因为Url上有另一个参数。操作表明您正在添加或更新某些内容,并在服务器端脚本上编写正确的行为代码。@Ronaldo所以在jquery中不可能这样做?我必须在服务器端完成这项工作……只需要在调用validate()方法之后。
if($("#HfId").val() == "") {
$("#MobileNo").rules("add", {
remote: '<%=Url.Action("getClientMobNo", "Clients") %>'
});
}