我试图在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的最后一行,因为我可以使用警报来告诉我剩下的字符数,但是没有将值写入文本框。我做错了吗?
答案 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"
所以当你想在java脚本中使用一些元素时,你可以简单地在元素中添加一行:
<asp:TextBox id="txt1" ClientID="static" ...
这意味着你可以直接使用他的名字
java脚本:
var txtField = document.getElementById("txt1")