2013-10-11 78 views
0

所以我有這個包含TextBoxtA和TextBoxtB的ASP.NET窗體。我希望如果我在TextBoxA上輸入某些輸入(例如'000'),TextBoxtB文本值將被設置爲'TextChanged'並被禁用。 PS:我希望在TextBoxA發生變化之後立即發生這種情況,而不是在onClick被觸發時發生。所以我使用屬性onTextChanged。根據這個http://forums.asp.net/t/1300979.aspx,我不得不使用onChange,並在後面的代碼中改變PageLoad上的屬性。但它似乎無法工作。用Javascript更改ASP文本框屬性

因此,繼承人我的代碼:

<script runat="server"> 
    function changeText() { 
     var A = document.getElementById('<%=inputTexboxtA.ClientID%>').value; 
     var B = document.getElementById('<%=inputTexboxtB.ClientID%>').value; 

     if (A = '000') { 
      B = 'TextChanged'; 
     } 
    } 
</script> 

protected void Page_Load(object sender, EventArgs e) 
      { 
       inputTexboxtA.Attributes.Add("onChange", changeText()); 
      } 

<asp:TextBox ID="inputTexboxtA" runat="server" MaxLength="3"/></td> 
<asp:TextBox ID="inputTexboxtB" runat="server" MaxLength="3"/></td> 

我這樣做對嗎?謝謝!

回答

1

Basicaly不,你做錯了。 OnChange不是文本框的事件。 當用戶更改字段時請查看OnBlur,或在用戶輸入其他選項時查看OnKeyUp。潛在的使用兩者。

您可能還需要調查jQuery

你也有一個語法錯誤等問題。您需要使用==!=進行比較。你也不會改變B值,以便:

function changeText() { 
    var A = document.getElementById('<%=inputTexboxtA.ClientID%>').value; 
    var B = document.getElementById('<%=inputTexboxtB.ClientID%>'); 

    if (A == '000') { // or (A != '000') 
     B.value = 'TextChanged'; 
    } 
} 

的onblur例子:http://jsfiddle.net/4HwmU/

更新:所以我不應該代碼時累!的OnChange是好的,問題是在代碼

的OnChange例的各種錯誤:http://jsfiddle.net/4HwmU/1/

有關的onblur變化的關係及differnces更多信息:What is the difference between onBlur and onChange attribute in HTML?

+0

的onkeyup將是更好的選擇.... –

+0

@ Jon-P對於可怕的語法錯誤感到抱歉。難怪我得到了很多錯誤。我正在使用onKeyUp,它運行良好。非常感謝您的幫助! :D – paulfah

+0

@Rony這個規範有點含糊,所以我提到了兩種,我覺得模糊不那麼幹擾,但有時候OnKeyUp會更好,而且我通常使用模糊作爲OnKeyUp的後備,以防萬一。 –

0
protected void Page_Load(object sender, EventArgs e) 
     { 
      inputTexboxtA.Attributes.Add("OnKeyUp", changeText()); 
     }