无法在javascript中设置asp.net文本框值

时间:2014-08-20 18:45:39

标签: javascript asp.net

我试图在ASP.NET多行文本框旁边创建一个简单的计数器框。我使用JavaScript来执行此ClientSide。

 <script type="text/javascript">

       function textCounter(maxlimit) {

           var txtField = document.getElementById('<%=txtWhatCompanyDoes.ClientId%>')

           var cntCounter = document.getElementById('<%=txtWhatCompDoesChrsRem%>')

           if (txtField.value.length > maxlimit) {

               txtField.value = txtField.value.substring(0, maxlimit);
           }
           else
           {
               var chrsleft = maxlimit - txtField.value.length;
               cntCounter.value = chrsleft;

           }
       }
    </script>

我的网页代码是;

<asp:TextBox ID="txtWhatCompanyDoes" onKeyUp="textCounter('txtWhatCompanyDoes', 'txtWhatCompDoesChrsRem',2000);" runat="server" TextMode="MultiLine" Rows="10"></asp:TextBox>
                <asp:TextBox ID="txtWhatCompDoesChrsRem" runat="server"></asp:TextBox>

问题在于它可以直到JavaScript的最后一行,因为我可以使用警报来告诉我剩下的字符数,但是没有将值写入文本框。我做错了吗?

4 个答案:

答案 0 :(得分:0)

尝试在txtWhatCompDoesChrsRem

末尾的第4行添加客户端ID

       function textCounter(maxlimit) {

           var txtField = document.getElementById('<%=txtWhatCompanyDoes.ClientId%>')

           var cntCounter = document.getElementById('<%=txtWhatCompDoesChrsRem.ClientId%>')

           if (txtField.value.length > maxlimit) {

               txtField.value = txtField.value.substring(0, maxlimit);
           }
           else
           {
               var chrsleft = maxlimit - txtField.value.length;
               cntCounter.value = chrsleft;

           }
       }
    </script>

答案 1 :(得分:0)

哇,多么吵闹。我无法相信我错过了。我是否可以厚脸皮,并询问如何在一个页面上为多个计数器盒制作动态例如。

<script type="text/javascript">

   function textCounter(field, cntField, maxlimit) {

       var txtField = document.getElementById(field)

       var cntCounter = document.getElementById('<%=txtWhatCompDoesChrsRem.Clientid%>')

       if (txtField.value.length > maxlimit) {

          txtField.value = txtField.value.substring(0, maxlimit);
       }
       else
       {
          var chrsleft = maxlimit - txtField.value.length;

          cntCounter.value = chrsleft;

       }
    }
    </script>




<asp:TextBox ID="txtWhatCompanyDoes" onKeyUp="textCounter(this.id, txtWhatCompDoesChrsRem',2000);" runat="server" TextMode="MultiLine" Rows="10"></asp:TextBox>
    <asp:TextBox ID="txtWhatCompDoesChrsRem" runat="server"></asp:TextBox>

我可以使用&#34; this.id&#34;传递第一个控件ID。但是如何将计数器框作为变量传递?

答案 2 :(得分:0)

我能解决这个问题的唯一方法是将计数器框设置为ASP文本框而不是ASP文本框。

<asp:TextBox ID="txtWhatCompanyDoes" onKeyUp="textCounter(this.id, this.form.txtWhatCompDoesChrsRem, 2000);" runat="server" TextMode="MultiLine" Rows="10"></asp:TextBox>
 <input name="txtWhatCompDoesChrsRem" type="text" value="2000" />

答案 3 :(得分:0)

asp.net中的每个元素都继承了"txtWhatCompDoesChrsRem.Clientid"

之类的ID

所以当你想在java脚本中使用一些元素时,你可以简单地在元素中添加一行:

<asp:TextBox id="txt1" ClientID="static" ... 

这意味着你可以直接使用他的名字

java脚本:

var txtField = document.getElementById("txt1")