19

How would I do this without jQuery?

$('input[type=submit]').attr('disabled',true);

It doesn't have to be cross-browser compatible; a solution that only works in Firefox is OK.

bfavaretto
  • 71,580
  • 16
  • 111
  • 150
Kip
  • 107,154
  • 87
  • 232
  • 265

4 Answers4

44
var inputs = document.getElementsByTagName("INPUT");
for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].type === 'submit') {
        inputs[i].disabled = true;
    }
}
RaYell
  • 69,610
  • 20
  • 126
  • 152
6

Have you tried

document.getElementsByTagName("input");

then you could interrogate the DOM to find your submit button. getElementsByTagName reference

A full sample

window.onload = function(e) {
    var forms = document.getElementsByTagName('form');
    for (var i = 0; i < forms.length; i++) {
        var input = forms[i].getElementsByTagName('input');
        for (var y = 0; y < input.length; y++) {
            if (input[y].type == 'submit') {
                input[y].disabled = 'disabled';
            }
        }

    }
}
David Christiansen
  • 5,869
  • 2
  • 36
  • 42
  • Wow, in the time it took me to write that you got 4 answers ;) Guess it must have been an easy question ! :) – David Christiansen Jul 29 '09 at 18:24
  • thanks, but two things: you have a hard-coded "input[0]" that needs to be "input[i]", and .toLowerCase() apparently isn't necessary (at least for me in FF 3.5.1). – Kip Jul 29 '09 at 18:32
1
var els = document.getElementsByTagName ( 'input' );
for ( var i = 0; i < els.length ; i ++ ) {
 if ( els[i].type == 'submit' ) els[i].setAttribute('disabled', 'true'); 
}
Patrick McElhaney
  • 57,901
  • 40
  • 134
  • 167
Jamie
  • 5,994
  • 1
  • 18
  • 15
1

This is untested, but it or something very similar should work. It could be made better with error and feature checking.

var inputs = document.getElementsByTagName('input');

for(var i = 0; i < inputs.length; i++){
  if(inputs[i].type == 'submit'){
    inputs[i].disabled = 'disabled';
  }
}
Patrick McElhaney
  • 57,901
  • 40
  • 134
  • 167
phairoh
  • 10,485
  • 4
  • 23
  • 18