【发布时间】:2017-08-07 10:37:30
【问题描述】:
我有以下在页面加载时运行的代码。我只想在用户在文本框中完成写入时运行它。
代码是:
$(document).ready(function () {
$("#user_email").on('change keyup paste', function () {
$.post('/users/check_email?email=' + $("#user_email").val(), function (data) {
console.log(data);
});
});
});
文本字段:
<%= f.email_field :email, :type=>"email" %>
我不想在页面加载时运行它,但是当用户在其中输入内容时,它应该执行 ajax 工作。
此外,如果用户写入 1 或 3 个字符,它就会开始发送 ajax。我需要检查电子邮件,以便如何处理这个用例?
更新
重要的问题是我已将电子邮件保存在文本字段中,例如表单中的自动填充信息,因此当页面加载时,它会发送 ajax 请求并开始显示系统中已经存在的 xyz 电子邮件。 我不想在第一次加载页面时发送 ajax 请求,但我想让它在有人写完并在其中写完电子邮件时让它工作。
【问题讨论】:
-
我已经更新了我的问题,也感谢您的指正;)
-
没想到自动填充,废话。 :-)
-
@LearningROR:编辑从字面上说与问题本身没有更多相关性。代码应该已经按预期工作,除非在加载 DOM 后还有其他东西以某种方式填充输入。您可以对
change事件的回调添加严格检查,但真正的电子邮件检查应该发生在服务器端而不是客户端(最终两者)。您可能要遵循的过程是: 1) 编写(或者,最好是搜索)电子邮件正则表达式。 2) 获取user_email值,检查长度是否大于3。 3) 两次检查后进行ajax调用。 -
所以点击完成按钮后发送ajax请求,就像我在回答中所做的那样^^
-
但是你为什么不想在自动填充上做 ajax 工作呢?如果目标是验证字段的内容,为什么即使自动填充也不验证内容?
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-5.1