函数是在页面加载时发送ajax请求

时间:2017-08-07 10:37:30

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-5.1

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

代码是:

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

2 个答案:

答案 0 :(得分:-1)

检查输入值的长度,检查是否> 3,只发送一个AJAX请求:

&#13;
&#13;
$(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;
&#13;
&#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");
        });
    });
});