当另一个更改时,使用javascript函数更新一个文本框

时间:2015-03-12 18:16:53

标签: javascript jquery html asp.net

我有一个javascript函数可以计算2个不同文本框中的字符,并将值放在第三个文本框中。

这个功能如下:

function CountChars() {
             var subjectLength = document.getElementById("txtBoxSubject").value.length;
             var msgLength = document.getElementById("txtBoxMsg").value.length;
             document.getElementById("txtBoxCnt").value = subjectLength + msgLength;
         }

我使用' onkeyup'从消息文本框中调用它。它工作正常。

<asp:TextBox ID="txtBoxMsg" runat="server" ClientIDMode="Static" 
              TextMode="MultiLine" onkeyup="CountChars()"></asp:TextBox>

可以使用下拉列表或用户向其添加文本来更改“主题”文本框。所以使用&#39; onkeyup&#39;不适用于“主题”文本框。我尝试过使用&#39; onchange&#39;并且在计数文本框中没有输入任何内容。

这是主题html:

 <asp:TextBox ID="txtBoxSubject" runat="server" ClientIDMode="Static" onchange="CountChars()"></asp:TextBox>

我做错了什么?

如果主题文本框中的文本发生变化,如何调用javascript函数?

感谢。

更新 这是Subject下拉列表以及更改时调用的函数。

 <asp:DropDownList ID="ddListSubject" runat="server" ClientIDMode="Static" AutoPostBack="true" onchange="SubjectChanged();">
        </asp:DropDownList>

function SubjectChanged() {
        var strSubject = document.getElementById("ddListSubject").value;
        if (strSubject == "Custom") {
            document.getElementById("txtBoxSubject").value = "";
            document.getElementById("txtBoxSubject").focus();
         }
        else {
            document.getElementById("txtBoxSubject").value = strSubject;
        }
        CountChars(); //number appears for a second then disappears
     }

3 个答案:

答案 0 :(得分:1)

好像你没有用半列终止这个功能。使用类似onkeyup =“CountChars();”

答案 1 :(得分:0)

您的.aspx正在使用MasterPage? Asp.Net对象的名称在呈现的页面中发生变化。尝试使用&lt;%=%Objeto.ClientID&gt;。

function CountChars() {
         var subjectLength = document.getElementById("<%=txtBoxSubject.ClientID %>").value.length;
         var msgLength = document.getElementById("<%= txtBoxMsg.ClientID %>").value.length;
         document.getElementById("<%= txtBoxCnt.ClientID %>").value = subjectLength + msgLength;
     }

或者也许使用JQuery。看看下面的代码,按照你的描述工作。

Subject:
<input id="text1" type="text" />
<br />
Msg
<input id="text2" type="text" multiple style="height: 100px" />
<br />
Total: <span id="total">0</span>

<script type="text/javascript">
    $(document).ready(function () {
        $("input[type=text]").keyup(function () {
            var total = 0;
            $("input[type=text]").each(function () {
                total += $(this).val().length;
            });
            $("#total").html(total);
        });
    });
</script>

希望这有助于你

答案 2 :(得分:0)

假的我......我删除了AutoPostBack =&#34; true&#34;来自下拉! 谢谢你的帮助!!