仅当我的数据变量不为空时才如何关注表单字段

时间:2018-07-26 17:00:25

标签: php jquery ajax setfocus

我一直在使用php和ajax来验证数据库中是否存在以表单形式插入的电子邮件。

我正在使用jquery将电子邮件值发送到我的php文件,如果找到电子邮件,则返回一条消息。我的代码工作正常,但是我希望如果找到电子邮件,则光标将集中在#usu_email字段上,直到更改电子邮件为止。之后,它应该允许我继续下一个领域。

这是我正在使用的jquery代码:

function getemail(value) {
  var usumail = $("#usu_email").val();

  $.ajax({
    type: "POST",
    url: "ajax_email.php",
    data: "usu_email=" + usumail,
    success: function(data, textStatus) {
      if (data !== null) {
        $("#eresult").html(data);
        $("#usu_email").focus();
      }
    },
  });
};

我的问题是,如果数据库中不存在和电子邮件,则光标将继续关注#usu_email字段,并且不允许我继续下一个字段。

对于这个问题,我将不胜感激,因为我对jquery的了解很少。

2 个答案:

答案 0 :(得分:0)

取决于您期望的数据类型(简单文本响应或JSON),但是起初我会开始用if(data !== null)替换if(typeof data != "undefined" && data !== null && data != ""),因为返回的响应可能只是空的并且不为NULL。 如果它不起作用,则应考虑将php代码添加到问题中,以便我们在找不到匹配的电子邮件时可以准确地找出返回的内容。

答案 1 :(得分:0)

首先...您的条件===0 始终将为true,因为总会提供数据...为空字符串。

唯一不存在if (data !== null)的情况是Ajax错误...并且该条件甚至不会被评估,因为data回调将不会执行。

接下来,我假设您的Ajax请求是在success模糊条件下触发的...否则,我不知道您如何实现«不允许我继续»。 / p>

以这种方式修改它以比较响应:

$("#usu_email")

在PHP方面,您必须提供json响应。看起来像这样:

function getemail(value) {
  var usumail = $("#usu_email").val();

  $.ajax({
    type: "POST",
    url: "ajax_email.php",
    data: "usu_email=" + usumail,
    datatype: "json",
    success: function(data) {  // There is only one argument here.
      // Display the result message
      $("#eresult").html(data.message);

      if (data.email_exist == "yes") {
        $("#usu_email").focus();
      }
      if (data.email_exist == "no") {
        // Something else to do in this case, like focussing the next field.
      }
    },
  });
};

请注意不要回声。甚至没有空格或行返回。