Javascript validate:创建一个必填字段,除非远程返回false
我的任务是使一个字段成为必填字段,但如果ajax/远程调用返回false,则取消该必填字段顺序。我已经玩了好几天了,试图解决这个问题 我曾尝试以多种不同的方式使用Dependes,最初使用了此示例,但无法使其发挥作用- 出于某种原因,该示例甚至不会尝试查看远程代码 我一直在尝试剥离我的代码,只是为了了解depends是如何工作的 HTML: ajax_code.php:对于测试来说,现在只是一个简单的假或真的回音Javascript validate:创建一个必填字段,除非远程返回false,javascript,jquery,jquery-validate,depends,Javascript,Jquery,Jquery Validate,Depends,我的任务是使一个字段成为必填字段,但如果ajax/远程调用返回false,则取消该必填字段顺序。我已经玩了好几天了,试图解决这个问题 我曾尝试以多种不同的方式使用Dependes,最初使用了此示例,但无法使其发挥作用- 出于某种原因,该示例甚至不会尝试查看远程代码 我一直在尝试剥离我的代码,只是为了了解depends是如何工作的 HTML: ajax_code.php:对于测试来说,现在只是一个简单的假或真的回音 <?php echo "true"; // return false
<?php
echo "true"; // return false if OK
?>
因此,如果远程响应返回false,则不进行验证,但如果返回true,则进行验证
希望这有点道理。很难理解我正在努力实现的目标和我迄今为止所做的努力
感谢您的任何想法和帮助。展示更完整的代码示例。我在代码中的任何地方都没有看到远程规则声明。我没有看到你的HTML标记。我也看不到您使用remote调用的服务器端功能。如果您尝试了开发人员建议的解决方法,请向我们展示您是如何实现它的。有一个简单的问题:您为什么要这样做?那有什么好处?您可以简单地向需要验证的字段添加一个必需的类-我不明白您为什么要发出额外的请求。使用ajax请求进行验证对用户不是很友好——您可以使用普通的后端验证进行验证that@gulty,该字段不是必填字段,但是如果已填写,则必须将该值与远程服务器上的值进行比较。对我来说,这似乎是一件非常标准的事情。当然,但是使用ajax请求对我来说并没有什么意义。这种服务器端验证不需要js。请求也会被发送way@gulty,远程方法是这个客户端插件的一部分,它工作得很好。开始关于客户端验证和服务器端验证的辩论不适合评论部分。我们应该已经理解了基本的区别,并专注于回答具体的问题。
function register()
{
var cancel_validation = 0; // Dont cancel validation
var form = $("#register_employee_form");
var validator = form.validate({
errorElement: "p",
rules:
{
forename:
{
required: true,
remote: {
url: "ajax_code.php",
complete: function(response) {
if (response.responseText == "false")
{
cancel_validation = 1;
}
} // complete
}, // remote
depends: function() {
if(cancel_validation == 1)
{
return false;
}
}
} // forename
},
messages: {
forename: {
required : "forename required",
remote : "REMOTE"
}
},
submitHandler: function(form) {
form.submit();
}
});
validator.form();
}
<?php
echo "true"; // return false if OK
?>