Javascript jQuery:字段为空时重置类

Javascript jQuery:字段为空时重置类,javascript,jquery,Javascript,Jquery,注意: 下面的解决方案来自,请首先查看 我有11个输入: <input type="text" class="[something]-input inputs"> highlightInputNumbers功能如下: function highlightInputNumbers(classe, stepcount, empty){ var all= $("td[class*="+classe+"]"); var index = all.length

注意: 下面的解决方案来自,请首先查看

我有11个输入:

<input type="text" class="[something]-input inputs">
highlightInputNumbers
功能如下:

function highlightInputNumbers(classe, stepcount, empty){

        var all= $("td[class*="+classe+"]");
        var index = all.length-1;
        var concat_steps = $(all[index]).html().split('.')

        //var due_serie = $(all[index]).html().split('.')

        var due_serie = $('.'+classe+'-input').val().split('.')

        for (var i = index; i >= (index-stepcount)+2; i--) {
            due_serie = due_serie.concat($(all[i-1]).html().split('.'));
        };

        //Rimuovo i doppioni
        var serieCompleta = [];
        $.each(due_serie, function(i, el){
            if($.inArray(el, serieCompleta) === -1) serieCompleta.push(el);
        });

        //Ottengo dati          

        for(var s = 0; s < index-(stepcount-1); s++){

            var bar = $(all[s]);
            var barnum = bar.html().split('.');
            bar.html('');

            var found = 0;

            for(i = 0; i<= barnum.length-1; i++){

               for(n = 0; n<= serieCompleta.length-1; n++){

                  if(i != 4){ var punto = '.' }else{ var punto = ''}

                      /* Problem here:*/
                      if(barnum[i] == serieCompleta[n]){
                        bar.append('<span class="highlight">'+barnum[i]+'</span><span class="fade">'+punto+'</span>');
                        found = barnum[i];
                      }
                 }

               if(barnum[i] != found){
                bar.append('<span class="fade">'+barnum[i]+punto+'</span>');
               }
             }

          }
      }
函数HighlightInputNumber(类、步数、空){
var all=$(“td[class*=”+classe+“]);
var指数=all.length-1;
var concat_steps=$(全部[index]).html().split('.'))
//var due_serie=$(全部[索引]).html().split('.'))
变量due_serie=$('.+classe+'-input').val().split('.'))
对于(变量i=索引;i>=(索引步数)+2;i--){
due_serie=due_serie.concat($(全部[i-1]).html().split('.');
};
//里莫沃多皮奥尼酒店
var serieCompleta=[];
美元/每种(到期日、功能(i、el){
如果($.inArray(el,serieCompleta)=-1)serieCompleta.push(el);
});
//达蒂奥滕戈酒店
对于(var s=0;s对于(i=0;i代码中的小加法。
让我试着解释一下代码中发生了什么

第一次尝试:

  • 您的代码获取输入值(例如89.30.20)
  • 循环检查表中的所有可用值
  • 将每个值除以“.”
  • 然后循环这些值以检查匹配和高亮显示
  • 匹配的编号替换为突出显示的span(即20到20和不匹配的编号替换为褪色span

    这是第一次使用。但是在第二次尝试时,您的代码从第3步中中断了。正如在第3步中,代码尝试用“.”分割值。但是在您的第一次尝试中,值被替换为Span值。因此,为了纠正此问题,我添加了小检查和2-3行额外代码,以从Span值中提取实际值是的

  • 额外的代码是:

        // Check if values bar already contains Span tags (means already processed in first try 
        var hasSpans = bar.find('span').length>0;
        if(hasSpans) 
        {
          //If yes then extract the actual values from these span tags without '.' (This will work for all tries after FIRST)
          barnum=bar.find('span').map(
          function() { 
          if($(this).html() != '.') 
            return $(this).html().replace('.','');
          }).get();
          }
       // else normal case, split the values by '.' (This will for very FIRST try)
       else barnum = bar.html().split('.');
    
    $(document).on(“更改”,“输入”,函数()){
    var thisclass=$(this.attr('class').split(“-”)[0];
    if($(this.val()=''){
    //
    }
    HighlightInputNumber(此类,0);
    });
    函数HighlightInputNumber(类、步数、空){
    var all=$(“td[class*=”+classe+“]);
    var指数=all.length-1;
    var concat_steps=$(全部[index]).html().split('.'))
    //var due_serie=$(全部[索引]).html().split('.'))
    变量due_serie=$('.+classe+'-input').val().split('.'))
    对于(变量i=索引;i>=(索引步数)+2;i--){
    due_serie=due_serie.concat($(全部[i-1]).html().split('.');
    };
    //里莫沃多皮奥尼酒店
    var serieCompleta=[];
    美元/每种(到期日、功能(i、el){
    如果($.inArray(el,serieCompleta)=-1)serieCompleta.push(el);
    });
    //达蒂奥滕戈酒店
    对于(var s=0;s0;
    如果(哈斯潘)
    {
    barnum=bar.find('span').map(
    函数(){
    如果($(this.html()!='。)
    返回$(this.html().replace('.','');
    }).get();
    }
    else barnum=bar.html().split('.');
    html(“”);
    var=0;
    
    对于(i=0;i您是否尝试处理输入时的
    事件而不是更改时的
    事件?此外,如果您希望突出显示已编辑其值的输入,您可以通过
    $(此)
    引用它。如果没有相关标记(表),则很难提出解决方案,但看看这个:Tks@MelanciaUK。请看我在帖子开头的注释。@Mr.Web可以包含问题中的
    html
    ?是否需要突出显示包含相同数字的
    tr
    元素?
        // Check if values bar already contains Span tags (means already processed in first try 
        var hasSpans = bar.find('span').length>0;
        if(hasSpans) 
        {
          //If yes then extract the actual values from these span tags without '.' (This will work for all tries after FIRST)
          barnum=bar.find('span').map(
          function() { 
          if($(this).html() != '.') 
            return $(this).html().replace('.','');
          }).get();
          }
       // else normal case, split the values by '.' (This will for very FIRST try)
       else barnum = bar.html().split('.');