Эта переменная представляет собой входной сигнал, когда тип = текстSetAttribute не работает в IE
var x=document.getElementById('fiber-count');
У меня есть эта функция:
x.onkeyup=function(){
var u=x.value;
var v=parseInt(u);
var n=isNaN(u);
if(n){
this.setAttribute('placeholder', 'Invalid Character');
setTimeout(function(){this.setAttribute('placeholder','');},3000);
x.value="";
}
if(v<1){
this.setAttribute('placeholder', "Min. value is 1");
setTimeout(function(){this.setAttribute('placeholder','');},3000);
x.value='';
}
if(v>864){
this.setAttribute('placeholder', 'Max. value is 864');
setTimeout(function(){this.setAttribute('placeholder','');},3000);
x.value='';
};
if(v<=12&&v>=1){
tr.removeAttribute('disabled');
}else{
tr.setAttribute('disabled', 'disabled');
}
if(v==2){
swr.removeAttribute('disabled');
}else{
swr.setAttribute('disabled', 'disabled');
}
if(v!==2){
document.getElementById('cable_type').selectedIndex='0';
f_c.classList.remove('hidden');
var top=document.getElementsByName('subunit');
for(i=0; i<top.length; i++){
top[i].removeAttribute('disabled');
}
}
if(v==1){
document.getElementById('radio_option_1').checked=true;
}
if(v==12&&bast[0].checked){
document.getElementById('diameter').selectedIndex='3';
}
if(v>=12||v==8){
document.getElementById('sub_four').removeAttribute('disabled');
console.log('ribbon ought to be enabled');
}else{
//document.getElementById('sub_four').setAttribute('disabled', 'disabled');
document.getElementById('sub_four').setAttribute('disabled', 'disabled');
console.log('ribbon disabled')
}
};
Проблема не заключается в следующем: ни один из SetAttribute() методы работают в IE. Я не могу понять, почему. Я использую метод setAttribute() для установки атрибутов placeholder и disabled нескольких элементов. Проблема заключается в следующем: я получаю это сообщение об ошибке, когда я вводил 12 во вход.
Я пытался использовать свойство обозначения
element.disabled=true;
, но это не похоже на работу, как если установить его с помощью нотации свойств не сразу обновить его или что-то , Я бы опубликовал скрипку, но это не сработало, потому что эта ошибка возникает только в IE, поэтому JSFiddle не будет ее реплицировать.
Есть ли способ, которым я могу это исправить? Может быть, полипол? Пожалуйста, не JQuery.
'этот' функция область. Попробуйте 'var that = this' вне таймаута и используйте' that' внутри. – Oriol
Я попробую. Благодарю. – Leshy