0

我有以下在页面加载时运行的代码。我只想在用户在文本框中完成写入时运行它。

代码是:

$(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 请求,但我想让它在有人写完并在其中写完电子邮件时让它工作。

4

2 回答 2

-1

试试这个代码:

$(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");
        });
    });
}); 
于 2017-08-07T10:40:34.473 回答
-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);
      });
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='user_email' type='text' />

于 2017-08-07T10:39:05.170 回答