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
  • 70,503
  • 15
  • 107
  • 148
Kip
  • 103,341
  • 86
  • 231
  • 263

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
  • 68,096
  • 20
  • 124
  • 150
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,842
  • 1
  • 35
  • 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
  • 55,601
  • 40
  • 126
  • 165
Jamie
  • 5,596
  • 1
  • 19
  • 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
  • 55,601
  • 40
  • 126
  • 165
phairoh
  • 10,235
  • 4
  • 22
  • 18