当值与数组对象匹配时,inArray不返回true

时间:2019-10-11 23:25:59

标签: jquery ajax

我想检查数组中是否存在输入,即使输入与数组中的某个对象完全匹配,我也会一直使输出显示为false。我想念什么吗?

var name = $(".name").val();
var nameArray = ["Mary", "John"]

$(".submit").on('click', function(e) {
  e.preventDefault();

  function nameExists(name) {
    if ($.inArray(name, nameArray) >= 0) {
      return true;
    }
    return false;
  }

  console.log(nameExists());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input class="name">
  <input type="submit" class="submit">
</form>

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 您是在首次加载页面时设置name,而不是在用户提交表单时设置的。
  2. 调用该函数时,您没有将name变量传递给该函数。

var nameArray = ["Mary", "John"]

$(".submit").on('click', function(e) {
  e.preventDefault();

  function nameExists(name) {
    if ($.inArray(name, nameArray) >= 0) {
      return true;
    }
    return false;
  }
  var name = $(".name").val();
  console.log(nameExists(name));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input class="name">
  <input type="submit" class="submit">
</form>