我正在使用remote method中的jQuery validation plugin进行ajax调用。每次在输入字段中按下一个键时,都会激活远程功能。我想添加一个延迟,以便仅当用户停止按下按键几毫秒后才触发ajax请求。
此问题在2012年at GitHub中提出,但在2015年被开发人员关闭:
对这个问题缺乏活动感到抱歉。而不是离开
它不再打开,我决定关闭旧问题,而无需尝试
解决他们,再给人以错误的印象
最终解决。
在讨论论坛中,用户lohfu提出了以下解决方案:
$.validator.methods._remote = $.validator.methods.remote;
var timer = 0;
$.validator.methods.remote = function () {
clearTimeout(timer);
var args = arguments;
timer = setTimeout(function() {
$.validator.methods._remote.apply(this, args);
}.bind(this), 500);
return "pending";
};
但是,存在两个主要问题:
这没用。如果添加延迟,并且远程函数返回false,则仍将提交表单。
当我在输入字段中输入某些东西导致远程功能出错时,它会正确分配class="error"
。如果我现在选择其他输入,尽管错误消息仍然存在并且错误消息仍然显示,但class="error"
会切换到class="valid"
。当我按提交时,也会发生同样的情况。
这是一个最小的示例:
的HTML
<form action="test.php" method= "POST" id="form">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
<input type="submit">
</form>
JS
$("#form").validate({
rules: {
name: "required",
email: {
required: true,
email: true,
remote: {
url: "ajax.php",
type: "post"
}
}
},
messages: {
email: {
remote: "Email already exists"
}
}
});
ajax.php
<?php
header('Content-Type: application/json');
$valid = null;
echo json_encode($valid);
永远不要提交此表单,因为ajax.php总是返回false。但是,尽管显示了错误“电子邮件已存在”,但输入名称和有效的电子邮件仍将提交表单。
参考方案
以下小提琴是否按预期工作?
您可以将网址改为true或false:
url: '/echo/js/?js=[null|true|false]',
https://jsfiddle.net/ww0zh9jm/2/
..您必须投放外部资源(Fiddle删除了它们):
https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
https://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js
我试图了解如何将MySQL结果转换为JSON格式,以便以后可以在Javascript中使用此JSON来构建HTML表。但是我的代码只是产生大量的空值,我还不明白为什么。$result = mysqli_query($con, "SELECT * FROM Customers"); $test = json_encode($result);…
PHP Count数组元素 - php嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…
jQuery Ajax PHP重定向到另一个页面 - phpJavaScript文件:$.ajax({ type: "POST", url: "ajax.php", data: dataString, success: function(r) { $("#div").html(r); } }); 我想在成功的情况下将页面重定向到new.php,所以在我使用a…
PHP:从函数返回值并直接回显它? - php这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…
PHP:将数据从二维数组复制到一维数组的最快方法 - php我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…