Javascript jQuery:字段为空时重置类
注意: 下面的解决方案来自,请首先查看 我有11个输入: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
<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('.');