2011-09-22 51 views
0

我有一個複選框,可以在檢查時禁用2個文本框。當它未被選中時,它將啓用複選框。這裏是JavaScript:禁用檢查時的文本框已更改

function enableField() { 
    prePracticeCodeTextBox = document.getElementById('prePracticeCodeTextBox'); 
    preContactTextBox = document.getElementById('preContactTextBox'); 
    checkTheBox = document.getElementById('CheckBox1'); 
    if (checkTheBox.checked == true) { 
     prePracticeCodeTextBox.disabled = false; 
     preContactTextBox.disabled = false; 

    } 
    else { 
     prePracticeCodeTextBox.disabled = true; 
     preContactTextBox.disabled = true; 
    } 
} 

下面是HTML:

<dl> 
    <dt><label for="CheckBox1">PreAnalytical?</label></dt> 
    <dd> <asp:CheckBox ID="CheckBox1" runat="server" CausesValidation="false" 
          Visible="true" OnCheckChanged="enableField()"/></dd> 
</dl> 
<dl> 
    <dt><label for="prePracticeCodeTextBox">Practice Code:</label></dt> 
    <dd><asp:TextBox ID="prePracticeCodeTextBox" runat="server" Enabled="False" /></dd> 
</dl> 
<dl> 
    <dt><label for="preContactTextBox">Contact:</label></dt> 
    <dd><asp:TextBox ID="preContactTextBox" runat="server" Enabled="False" /></dd> 
</dl> 

的JavaScript函數不會被調用的。

我在做什麼錯?

回答

3

嘗試使用onclick來代替。使用下面的代碼對你的代碼註冊它背後:

CheckBox1.Attributes.Add("onclick", "enableField();"); 

順便說一句,你將不能夠爲您在asp.net web表單使用默認設置的應用程序做達到的元素。你需要得到將要呈現的元素的ClientID:

function enableField() { 
    prePracticeCodeTextBox = document.getElementById('<%=prePracticeCodeTextBox.ClientID%>'); 
    preContactTextBox = document.getElementById('<%=preContactTextBox.ClientID%>'); 
    checkTheBox = document.getElementById('<%=CheckBox1.ClientID%>'); 
    if (checkTheBox.checked == true) { 
     prePracticeCodeTextBox.disabled = false; 
     preContactTextBox.disabled = false; 

    } 
    else { 
     prePracticeCodeTextBox.disabled = true; 
     preContactTextBox.disabled = true; 
    } 


} 

如果您在.NET 4開發,請閱讀下面的文章:

http://www.tugberkugurlu.com/archive/we-lovenet-4-clean-web-control-ids-with-clientidmode-property-to-static-and-predictable

+0

我並不需要使用<%= ...它沒有它的工作 –

+1

然後,這意味着您的應用程序被配置爲生成乾淨的ID。請記住它。如果您將代碼放入ContentPlaceHolder(使用母版頁)時,元素的ID將肯定會更改。 – tugberk

1

變化OnCheckChanged="enableField()變爲onclick="enableField();"。您正在使用服務器控件。 OnCheckChanged是asp.net CheckBox控件的事件。

+0

感謝這麼多!!!!!!!!!!!!!!!!!!!!!!!!!!!!! –

0

功能enableField(){

prePracticeCodeTextBox =.getElementById('<%=prePracticeCodeTextBox.ClientID%>'); 
preContactTextBox = document.getElementById('<%=preContactTextBox.ClientID%>'); 
checkTheBox = document.getElementById('<%=CheckBox1.ClientID%>'); 

if (checkTheBox.checked == true) { 

    prePracticeCodeTextBox.disabled = false; 
    preContactTextBox.disabled = false; 

} 
else { 

    prePracticeCodeTextBox.disabled = true; 
    preContactTextBox.disabled = true; 
} 

}