2016-02-17 3 views
1

Это то, что элемент выглядит как из консоли:Почему jQuery показывает этот атрибут как undefined?

<input type="text" size="20" tabindex="3" id="txtR7163776" name="txtR7163776" selectorviewid="4149027" viewpageid="4877455" class="requiredInput" onfocus="new AutoSuggestControl(this, 4148821, 4149027);" matchfield="name" matchrule="ST" suggtype="rObj" ismultiple="false" autocomplete="off" filtername="R511444" filtervalue="-1"> 

Я пытаюсь удалить attribtes filtername и filtervalue.

Мой код:

$(document).ready(function(){ 
    var input = $("#txtR7163776"); 
    var attrA = input.attr("filtername"); 
    var attrB = input.attr("filtervalue"); 
    console.log(attrA, attrB); 
    input.removeAttr("filtername"); 
    input.removeAttr("filtervalue"); 
}); 

attrA и attrB показываются как неопределенные через консоль ... Что я здесь отсутствует?

обновленный код:

$(document).ready(function(){ 
    var input = $("#txtR7163776"); 
    console.log(input.length); //1 

    var attrA = input.attr("filtername"); 
    var attrB = input.attr("filtervalue"); 
    console.log(attrA, attrB); //showing undefined undefined in the console  

    input.removeAttr("filtername"); 
    input.removeAttr("filtervalue"); 

    var payroll = $("div[name='Payroll']"); 

var timekeep = $("div[name='Timekeeping']"); 

var benefits = $("div[name='Benefits']"); 

var HRIS = $("div[name='HRIS']"); 

payroll.hide(); 
timekeep.hide(); 
benefits.hide(); 
HRIS.hide(); 


console.log("A"); 
$("select[name='oppty_type']").click(function(){ 
    console.log("B"); 
    var isPay = false; 
    var isTime = false; 
    var isBene = false; 
    var isHris = false; 
    var isPremium = false; 
    var isPremiumPlus = false; 
    payroll.hide(); 
    timekeep.hide(); 
     benefits.hide(); 
    HRIS.hide(); 


    var multi = []; 
    multi = $("select[name='oppty_type']").val(); 
    console.log(multi); 
    for(var a = 0; a < multi.length; a++){ 
     if(multi[a] == 4143371){ 
      isPay = true; 
     } 
     if(multi[a] == 4143372){ 
      isTime = true; 
     } 
     if(multi[a] == 4143370){ 
      isHris = true; 
     } 
     if(multi[a] == 7457612){ 
      isBene = true; 
     } 
     if(multi[a] == 58318982){ 
      isPremium = true; 
     } 
     if(multi[a] == 58318983){ 
      isPremiumPlus = true; 
     } 
    } 

    if(isPay){ //payroll 

     payroll.show(); 


    } 
    if(isTime){ //timekeeping 

     timekeep.show(); 


    } 
    if(isHris){ //HRIS 

     HRIS.show(); 


    } 
    if(isBene){ //Benefits 

     benefits.show(); 



    } 
    if(isPremium){ //bundle premium 

     payroll.show(); 


     timekeep.show(); 


     benefits.show(); 



    } 
    if(isPremiumPlus){ //bundle premium plus 

     payroll.show(); 


     timekeep.show(); 


     benefits.show(); 


     HRIS.show(); 

    } 

    }); 
    }); 
+0

Можете ли вы сделать фрагмент? –

+1

Хорошо работает для меня: http://jsbin.com/hadukojifi/edit?html,js,console,output –

+1

'attrA.removeAttr (« filtername »);' не имеет никакого смысла. упрощенный, это то же самое, что и «R511444» .removeAttr («filtername»); ' –

ответ

2

Следующая не будет работать:

attrA.removeAttr("filtername"); 
attrB.removeAttr("filtervalue"); 

Поскольку вы работаете их на attrA и attrB, которые string. Приведенное выше утверждение примерно переводится значением меньше:

"R511444".removeAttr("filtername"); 
"-1".removeAttr("filtername"); 

Вы должны делать:

input.removeAttr("filtername"); 
input.removeAttr("filtervalue"); 

Но в консоли я получаю оба attr значения:

Выход: http://jsbin.com/hadukojifi/edit?html,js,console,output

+0

Отлично. Лемме попробуй ...Я настраиваю существующую платформу Rollbase для удаления атрибутов theses из поля, которое правильно отображает данные, интересно, есть ли что-то еще, чего я не вижу? –

+2

Удаление атрибутов, вероятно, не имеет эффекта, на который вы надеялись. Скорее всего, все, что делает атрибут, уже произошло к тому моменту, когда вы их удаляете, что делает проблему X/Y. –

+0

Вам нужно показать нам полный код, чтобы сообщить, чего вам не хватает. ':)' Чтобы мы могли помочь вам лучше. Что говорят @KevinB? –

1

Вы удаляете атрибут из attrA и attrB вместо input. Попробуйте, как следующий

input.removeAttr("filtername"); 
input.removeAttr("filtervalue"); 
0

Попробуйте использовать индекс 0 в вашей входной вар декларации

var input = $("#txtR7163776")[0] 

может быть, ваша JQuery версия возвращающей массив и вы не пропустите, что .. в моей версии JQuery код работает отлично ,,

+0

Это проблема XY и совершенно другая. Решено, разговаривая с ними напрямую. :) –

+1

congrats .... –

+0

Ха-ха .. Спасибо человеку. –