webentwicklung-frage-antwort-db.com.de

document.getElementById ('btnid'). disabled funktioniert nicht in Firefox und Chrome

Ich verwende JavaScript zum Deaktivieren einer Schaltfläche. Funktioniert gut in IE, aber nicht in FireFox und Chrome. Hier ist das Skript, woran ich gerade arbeite:

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

Und in meiner HTML habe ich: 

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

verwenden Sie setAttribute () und removeAttribute ()

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

SEE DEMO

37
Ahsan Khurshid

Setzen Sie das Attribut disabled direkt:

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

Es gibt immer seltsame Probleme mit der Browser-Unterstützung von getElementById. Versuchen Sie stattdessen Folgendes:

// 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");
    }    
}

Alternativ können Sie jQuery umarmen, wo Sie dies einfach tun könnten:

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

Einige JavaScript-Funktionen funktionieren manchmal nicht in einem bestimmten Browser. Ich würde Ihnen empfehlen, JQuery zu verwenden, wodurch Sie normalisierte JS erhalten und auf unterschiedliche Browseranforderungen achten können

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

Eine andere Alternative: 

document.formname.elementname.disabled=true

Arbeit an FF und IE! :)

0
HiCode