2011-08-12 89 views
3

我想單擊按鈕時禁用它。這裏是我的代碼:禁用表單元素

var disable = function(form_name,btn_name) { 
    document.form_name.btn_name.disabled = true; 
} 

這是disable()怎麼叫:

<form name = 'form1'> 
    <input name = 'btn1' type = 'button' disabled = false onclick = 'disable("form1","btn1")' /> 
</form> 

此代碼不能正常工作。有誰知道爲什麼?

+1

此外,備案,而I *總*把空間圍繞'='的過程語言,我不得不說以HTML的方式讓他們看起來非常痛苦。 – chaos

+0

我認爲在一些瀏覽器中,HTML中的'disabled = false'會禁用按鈕,因爲它會讀取'disabled'屬性並忽略'= false'位。解決這個問題可能是最安全的。 – ipr101

+0

@ ipr101 - 這正是發生了什麼事。謝謝你的提升。 – dopatraman

回答

5

因爲

document.form_name.btn_name.disabled = true; 

是一樣的做

document['form_name']['btn_name'].disabled = true; 

你需要做的

document[form_name][btn_name].disabled = true; 
+0

@ chaose - 我沒有做過什麼?你能否詳細說明一下? – dopatraman

+1

@codeninja:不,它不是。看起來你覺得'obj.foo'和'obj [foo]'是一樣的;他們不是,我上面寫的說明他們是如何不同的。 – chaos

2

您不能使用變量名稱的點符號,你應該用數組表示法:

var disable = function(form_name,btn_name) { 
    document[form_name][btn_name]["disabled"] = true; 
} 
2

如何只:

onclick = 'this.disabled = true;' 
2

你可以做

<form name='form1'> 
    <input name='btn1' type='button' disabled='false' onclick='this.disabled = true' /> 
</form>