我有一个表单,正在通过 jQuery Validate 插件进行验证。除了一件事之外,一切都工作正常。
我有一个使用的字段,即远程规则,并且我正在使用 AJAX 来检查是否已存在同名的应用程序记录。仅当用户更改字段中的值时,我才需要执行此验证。
这是我的验证代码:
$('#createapp').validate({
rules: {
appname: {
minlength: 8,
required: true,
remote: {
url: "<?php echo base_url();?>app/application/check_app",
type:"POST",
async: false,
data: {
appname: function() {
return $("#appname").val();
}
}
}
},
apptitle: {
required: true
}
},
messages: {
appname: {
remote: "Application with same name already exists"
}
},
highlight: function(label) {
$(label).closest('.control-group').addClass('error');
},
success: function(label) {
label
.text('OK!').addClass('valid')
.closest('.control-group').addClass('success');
}
});
我需要这样做:
仅当用户更改应用程序名称字段中的文本时才执行远程验证。我尝试使用depends但无法使其工作。这基本上是我尝试过的:
remote: {
depends: function(element){
return ($('#appname').val() != "<?php echo trim($application[0]->app_name) ?>" );
}
最佳答案
我终于使用了一个解决方法。如下
将原始名称作为隐藏参数传递
<input type="hidden" name="orgappletname" id="orgappletname" value="<?php echo $applet[0]->applet_name ?>">
设置 jQuery 与原始名称进行比较,看看模糊是否发生了变化。如果是,则触发 ajax 请求来检查更改后的名称。
$('#appletname').blur(function(){ if($(this).val() != $('#orgappname').val()){ $.ajax({ url: "<?php echo base_url() . "apl/applet/check_applet" ?>", data: "appletname=" + $(this).val(), type: "POST", success: function (msg) { } }); } });
我不确定这是否是正确的方法,但它对我有用。
关于jquery - 有条件的远程验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561053/