Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我键入字母并将其全部删除后,框中的单词应';我没有显示任何颜色 瑞德先生{ 颜色:红色; } 声称 飞机 $(文档).ready(函数(){ $('#search').keyup(函数(){ 搜索框($(this.val()); }); }); 函数搜索框(inputStr){ $('#boxdata')。查找('tr')。每个(函数(索引,行){ 变量名称=$(行).find('td'); 如果(names.length>0){ var=false; 每个函数的名称(索引,td){ var regExp=new regExp(inputStr,'gi'); if(regExp.test($(td.text())){ 发现=真; 返回false; } if($(“输入[类型=文本]”).val()=''){ } }); if(find==true) $(行).addClass(“红色”); 其他的 $(行).removeClass(); } }); }_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 在我键入字母并将其全部删除后,框中的单词应';我没有显示任何颜色 瑞德先生{ 颜色:红色; } 声称 飞机 $(文档).ready(函数(){ $('#search').keyup(函数(){ 搜索框($(this.val()); }); }); 函数搜索框(inputStr){ $('#boxdata')。查找('tr')。每个(函数(索引,行){ 变量名称=$(行).find('td'); 如果(names.length>0){ var=false; 每个函数的名称(索引,td){ var regExp=new regExp(inputStr,'gi'); if(regExp.test($(td.text())){ 发现=真; 返回false; } if($(“输入[类型=文本]”).val()=''){ } }); if(find==true) $(行).addClass(“红色”); 其他的 $(行).removeClass(); } }); }

Javascript 在我键入字母并将其全部删除后,框中的单词应';我没有显示任何颜色 瑞德先生{ 颜色:红色; } 声称 飞机 $(文档).ready(函数(){ $('#search').keyup(函数(){ 搜索框($(this.val()); }); }); 函数搜索框(inputStr){ $('#boxdata')。查找('tr')。每个(函数(索引,行){ 变量名称=$(行).find('td'); 如果(names.length>0){ var=false; 每个函数的名称(索引,td){ var regExp=new regExp(inputStr,'gi'); if(regExp.test($(td.text())){ 发现=真; 返回false; } if($(“输入[类型=文本]”).val()=''){ } }); if(find==true) $(行).addClass(“红色”); 其他的 $(行).removeClass(); } }); },javascript,jquery,regex,Javascript,Jquery,Regex,在我在文本字段中键入字母并全部删除后,框中的单词不应显示任何颜色。 但我的代码在所有单词上不断显示红色。 请告诉我在哪里更改代码。您的问题是,空字符串匹配了这两个单词,因为RegExp同时传递了它们 我想这应该适用于你的情况: <style type="text/css"> .red{ color : red; } </style> </head> <body> <input t

在我在文本字段中键入字母并全部删除后,框中的单词不应显示任何颜色。 但我的代码在所有单词上不断显示红色。
请告诉我在哪里更改代码。

您的问题是,空字符串匹配了这两个单词,因为RegExp同时传递了它们

我想这应该适用于你的情况:

   <style type="text/css">
    .red{
     color : red;
    }
    </style>
    </head>
    <body>
    <input type="text" id="search"/>    
      <table id="boxdata">
                <tr>
              <td class="namebox1">claim</td>
            </tr>
            <tr>
              <td class="namebox2">plane</td>
            </tr>
       </table>

    <script>
    $(document).ready(function(){
       $('#search').keyup(function(){ 
        searchBox($(this).val());
       });
    });

    function searchBox(inputStr) {
      $('#boxdata').find('tr').each(function(index, row){
        var names = $(row).find('td');
          if(names.length > 0) { 
          var found = false;
           names.each(function(index, td) {
             var regExp = new RegExp(inputStr, 'gi');
           if(regExp.test($(td).text())) {
                 found = true;
             return false;
           }
              if($("input[type=text]").val() == ''){

              }
           });

             if(found == true)
              $(row).addClass("red");
             else 
              $(row).removeClass();        
          }
      });
    }
    </script>
    </body>

您的问题是空文本满足您的正则表达式检查,因为“平面”和“声明”都包含文本“”

在搜索框函数中,将if检查更改为也检查inputStr是否为空

$(document).ready(function(){
    $('#search').keyup(function(){ 
        searchBox($(this).val());
    });
});

function searchBox(inputStr) {
    var box = $('#boxdata');
    box.find('tr').each(function(index, row){
        var names = $(row).find('td');
        if(names.length > 0) { 
            var found = false;
            names.each(function(index, td) {
                var regExp = new RegExp(inputStr, 'gi');
                if(regExp.test($(td).text())) {
                    found = true;
                }
                if($("input").val().length == 0){
                    found=false;
                }
            });          
            if(found) {
                $(row).addClass("red");
            }
            else {
                $(row).removeClass("red");
            }
        }
    });
}

问题不清楚……例如,如果我在文本字段中键入字母“c”。然后,单词“claim”字体颜色必须由黑色变为红色。如果我输入字母“p”。然后“平面”一词必须改变。你能理解吗?我还添加了一些css代码。解决这个问题没关系。好的,明白了。。。看看我的解决方案。。。
function searchBox(inputStr) {
    var box = $('#boxdata');
    box.find('tr').each(function(index, row){
        var names = $(row).find('td');
        if(names.length > 0) { 
            var found = false;
            names.each(function(index, td) {
                var regExp = new RegExp(inputStr, "gi");
                console.log(inputStr);
                if(regExp.test($(td).text()) && inputStr != "") {
                    found = true;
                    return false;
                }
            });

            if(found == true){
                $(row).addClass("red");   
            }
            else {
                $(row).removeClass();        
            }
        }
    });
}