Javascript 为什么当我的输入为空时,$(…).val()==”为false?

Javascript 为什么当我的输入为空时,$(…).val()==”为false?,javascript,jquery,Javascript,Jquery,当输入元素中没有任何内容时,我想删除一个类,就像在Google中,当您的搜索输入为空时,它不会显示建议 我已经试过了,但不起作用: $(".sc").keyup(function() { var x = $(this).val(); $.post("search.php", { search: x }, function(checkSearch) { if (x == "") { $(".search").removeClass("searchOn");

当输入元素中没有任何内容时,我想删除一个类,就像在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");
    }
  });
});
如何修复它?

ifx==捕获空字符串,而不是null


尝试使用if!相反,x会查看x是否为null、未定义或空字符串。

如果要检查输入是否为null或未定义,请与此值进行比较。如果您这样做,则空字符串x=的计算结果为true!十,。因此,如果您只想检查值是否为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);

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


不为空。这是一个空字符串。x==不会捕获null或未定义。请参阅$.search.removeclassearchon;这也是一个逻辑错误。如果在存在空字符串时不想删除类,则删除空的可能副本fails@F.bernal询问者明确表示,当输入为空时,他希望删除它。
$(".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");
           }
       });