2013-10-11 49 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()); 
     }