我有以下代码在页面加载时运行。我只想在用户完成文本框写作时运行它。
代码是:
$(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。我需要检查电子邮件,以便我如何处理这个用例?
更新
重要的问题是我已经在textfield中保存了我的电子邮件,比如表单中的自动填充信息,因此当页面加载时,它会发送ajax请求并开始显示系统中已存在的xyz电子邮件。 我第一次在页面加载时不想发送ajax请求,但是当有人写完并在其中写完电子邮件时我想让它工作。
答案 0 :(得分:-1)
检查输入值的长度,检查是否> 3,只发送一个AJAX请求:
$(document).ready(function() {
$("#user_email").on('keyup change', function() {
var enteredValue = $(this).val();
if (enteredValue.length > 3) {
$.post('/users/check_email?email=' + enteredValue, function(response) {
console.log(response);
});
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='user_email' type='text' />
&#13;
答案 1 :(得分:-2)
试试这段代码:
$(document).ready(function () {
$("#user_email").on('change keyup paste', function () {
$.post('/users/check_email', { email: $("#user_email").val()},
function(data){
console.log(data);
}).fail(function(){
console.log("error");
});
});
});