2012-01-17 6 views
3

現在、4つのテキストボックス、1つのチェックボックス、およびドロップダウンリストがあります。私は チェックボックスがオンになっているときにtextboexesとドロップダウンリストを無効にしようとしています。現在のコードは動作しませんが、エラーが見つからないようです。私はJavaScriptを初めて使用しています。javascriptのチェックボックスでコントロールを無効にする

function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4) 
{ 
    if (document.getElementById(phyAddressCheckBox).checked) 
{ 
document.getElementById('tb1').enabled = true; 
document.getElementById(tb2).enabled = true; 
document.getElementById(tb3).enabled = true; 
document.getElementById(file1).enabled = true; 
document.getElementById(tb4).enabled = true; 
} 
else 
{ 
document.getElementById(tb1).enabled = false; 
document.getElementById(tb2).enabled = false 
document.getElementById(tb3).enabled = false; 
document.getElementById(file1).enabled = false; 
document.getElementById(tb4).enabled = false; 
} 
} 

編集 私は両方の条件に無効にすべてのプロパティを設定し、何が機能しません。

<script type="text/javascript" language="javascript"> 
function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4) 
{ 
    if (document.getElementById(phyAddressCheckBox).checked) 
{ 
    document.getElementById('tb1').disabled = 'disabled'; 
document.getElementById(tb2).disabled = 'disabled'; 
document.getElementById(tb3).disabled = 'disabled'; 
document.getElementById(file1).disabled = 'disabled'; 
document.getElementById(tb4).disabled = 'disabled'; 
} 
else 
{ 
document.getElementById(tb1).disabled = 'disabled'; 
document.getElementById(tb2).disabled = 'disabled'; 
document.getElementById(tb3).disabled = 'disabled'; 
document.getElementById(file1).disabled = 'disabled'; 
document.getElementById(tb4).disabled = 'disabled'; 
} 
} 
</script> 

私もコントロールコードで追加しました。

<asp:CheckBox ID="phyAddressCheckBox" runat="server" onclick="enableCheckBox(this.ID, physicalAddressTextbox, PhysicalAddress2Textbox, CityTextbox, physicalStateDropDownList,physicalZipTextbox)" style="text-align: left" /> 
+0

あなたの問題は、あなたの 'tb1'引数を引用しているという事実ですか? –

+0

私はそれを変更し、訂正も何もしませんでした。 – MasterP

+0

エラーを示してください。あなたは何がうまくいかないかは説明していません。 http://jsfiddle.netを作成してここに投稿してください –

答えて

1

のようにそれを行うことができますHTML属性とは異なり、ブール値をとります。 https://developer.mozilla.org/en/DOM/HTMLInputElement

enableCheckBoxに渡す変数の名前から、IDの代わりにDOMノードを渡しているようです。

もう1つの問題は、this.IDを渡していることです。this.idを渡す必要があります。さらに良いことに、要素自体を渡すだけです。この例を参照してくださいhttp://jsfiddle.net/mendesjuan/7ZEvk/2/

最後の問題(最初の例では)はenabledプロパティを設定しようとしていましたが、それは存在しませんでした。 disabledプロパティを設定する必要があります。

HTML

<input type='checkbox' id='cbox' onclick="enableCheckBox(this, 'text1', 'text2', 'text3', 'sel');"/> 

<input id='text1' /> 
<input id='text2' /> 
<input id='text3' /> 
<select id='sel'> 
    <option>hello</option> 
</select> 

はJavaScript

// This is a lot like your function, but is less repetitive 
function enableCheckBox(cbox /*, ... ids of fields to enable/disable */){  
    for (var i = 1; i < arguments.length; i++) { 
     document.getElementById(arguments[i]).disabled = cbox.checked; 
    } 
} 
+0

私が参照していたものは同じではありませんでした。 – MasterP

+0

@ MasterP:ハァッか。何が同じものではないのですか? –

0

disabledプロパティを使用します。

document.getElementById(tb1).disabled = 'disabled'; 
1

試してみてください。

document.getElementById(tb1).disabled='disabled'; 
+0

参照:http://stackoverflow.com/questions/1558485/why-does-disabled-true-for -html-work –

+1

disabledプロパティはtrueまたはfalseをとります。 HTML属性は文字列を取ります。私は 'disabled = trueまたはfalse'を設定することに問題は一度もありません。https://developer.mozilla.org/en/DOM/HTMLInputElement –

+0

個人的には、jQueryを使用して属性を設定します。$(tb1).attr (「無効」、「無効」)。 –

0

disabledがあるとき、それは他のdisabledelementenabledであり、removeAttributesetAttributeを利用します。あなたは、私は、人々はあなたが入力要素にdisabled='disabled' disabledプロパティを使用することを伝えるに反対

function enableCheckBox(phyAddressCheckBox, tb1, tb2, tb3, file1, tb4){ 
    if (document.getElementById(phyAddressCheckBox).checked){ 
     document.getElementById(tb1).removeAttribute("disabled"); 
     document.getElementById(tb2).removeAttribute("disabled"); 
     document.getElementById(tb3).removeAttribute("disabled"); 
     document.getElementById(file1).removeAttribute("disabled"); 
     document.getElementById(tb4).removeAttribute("disabled"); 
    }else{ 
     document.getElementById(tb1).setAttribute("disabled", "disabled"); 
     document.getElementById(tb2).setAttribute("disabled", "disabled"); 
     document.getElementById(tb3).setAttribute("disabled", "disabled"); 
     document.getElementById(file1).setAttribute("disabled", "disabled"); 
     document.getElementById(tb4).setAttribute("disabled", "disabled"); 
    } 
} 
関連する問題