web-dev-qa-db-fra.com

document.getElementById ('btnid'). disabled ne fonctionne pas dans Firefox et Chrome.

J'utilise JavaScript pour désactiver un bouton. Fonctionne bien dans IE mais pas dans FireFox et Chrome, voici le script sur lequel je travaille:

function disbtn(e) { 
    if ( someCondition == true ) {
       document.getElementById('btn1').disabled = true;
    } else {
       document.getElementById('btn1').disabled = false;
    }

Et dans mon html j'ai: 

<input type="button" id="btn1" value="submit" />
15
steeve

utilisez setAttribute () et removeAttribute ()

function disbtn(e) { 
    if ( someCondition == true ) {
       document.getElementById('btn1').setAttribute("disabled","disabled");
    } else {
       document.getElementById('btn1').removeAttribute("disabled");
    }
}

VOIR LA DÉMO

37
Ahsan Khurshid

Essayez de définir l'attribut disabled directement:

if ( someCondition == true ) {
   document.getElementById('btn1').setAttribute('disabled', 'disabled');
} else {
   document.getElementById('btn1').removeAttribute('disabled');
}
3
this.lau_

Il y a toujours des problèmes étranges avec la prise en charge de getElementById par un navigateur. Essayez plutôt d'utiliser ce qui suit:

// document.getElementsBySelector are part of the prototype.js library available at http://api.prototypejs.org/dom/Element/prototype/getElementsBySelector/

function disbtn(e) { 
    if ( someCondition == true ) {
        document.getElementsBySelector("#btn1")[0].setAttribute("disabled", "disabled");
    } else {
        document.getElementsBySelector("#btn1")[0].removeAttribute("disabled");
    }    
}

Vous pouvez également choisir jQuery pour faire simplement ceci:

function disbtn(e) { 
    if ( someCondition == true ) {
        $("#btn1").attr("disabled", "disabled");
    } else {
        $("#btn1").removeAttr("disabled");
    }    
}
0
Paul Aldred-Bann

Certaines fois, certaines fonctions javascript ne fonctionnent pas sur certains navigateurs. Je vous suggérerais de commencer à utiliser JQuery, qui vous donne un JS normalisé, en prenant en compte les différentes exigences du navigateur.

$('#btn1').each(function(){
    this.disabled = false;
});
0
Anand

Une autre alternative: 

document.formname.elementname.disabled=true

Travailler sur FF et IE! :)

0
HiCode