【问题标题】:Why is $(…).val() == "" false when my input is empty?当我的输入为空时,为什么 $(...).val() == "" false?
【发布时间】:2019-09-14 04:54:01
【问题描述】:

input 元素内没有任何内容时,我想删除一个类,例如在 Google 中,当您的搜索输入为空时,它不会显示建议。

我已经尝试过了,但它不起作用:

$(".sc").keyup(function() {
  var x = $(this).val();
  $.post("search.php", { search: x }, function(checkSearch) {
    if (x == "") {
      $(".search").removeClass("searchOn");
      $(".search").html(checkSearch);
    } else {
      $(".search").html(checkSearch);
      $(".search").addClass("searchOn");
    }
  });
});

我该如何解决?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

if(x == '') 捕获空字符串,而不是 null。

尝试改用if(!x)(查看 x 是否为空、未定义或空字符串)。

【讨论】:

  • 如果他不想在代码失败的空字符串时删除类
  • @F.bernal 提问者明确表示他想在输入为空时将其删除。
【解决方案2】:

如果您想检查输入是否为空或未定义,只需与此值进行比较。如果执行 !x,则空字符串 (x = '') 的计算结果为真。因此,如果您只想检查该值是否为 null 或未定义,请执行此操作。

$(".sc").keyup(function ()
     {
       const x=$(this).val();
       $.post('search.php',{search:x},function (checkSearch)
       {
           x === null || x === undefined 
            ? $(".search").removeClass("searchOn") 
            : $(".search").addClass("searchOn")

           $(".search").html(checkSearch);

       }
});

【讨论】:

    【解决方案3】:

    我已经解决了 我应该使用=== 而不是==

    $(".sc").keyup(function ()
        {
           var x=$(this).val();
           $.post('search.php',{search:x},function (checkSearch)
           {
               if (x==='')
               {
                   $(".search").removeClass("searchOn");
                   $(".search").html(checkSearch);
               }
               else {
                   $(".search").html(checkSearch);
                   $(".search").addClass("searchOn");
               }
           });
    

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 2023-01-13
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多