// text Box
<asp:TextBox ID="TextBox3" runat="server" BackColor="Silver"
BorderColor="Silver" ontextchanged="TextBox3_TextChanged"
style="margin-left: 6px" Width="154px"></asp:TextBox>
// Submit button
<asp:Button ID="Button6" runat="server" BackColor="Silver"
onClientclick='store_memID()' style="margin-left: 20px" Text="Submit"
Width="102px" Font-Bold="True" Height="28px" />
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
var mem_ID = document.getElementById('TextBox3').value;
return confirm('TimeLine is displayed for: ' + mem_ID);
}
</script>
当我运行代码并在文本框中输入一个值,然后按提交按钮: - “Microsoft JScript运行时错误:无法获取属性'value'的值:object为null或undefined”。
否则,如果我删除'.value': -
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
var mem_ID = document.getElementById('TextBox3');
return confirm('TimeLine is displayed for: ' + mem_ID);
}
</script>
然后运行程序,在文本框中输入值,然后按提交,然后我得到: -
“TimeLine显示为:Null”
我一直在研究解决这个问题。不知道什么是错的......
编辑(修复): - 我的文本框的服务器端ID是“TextBox3”,但这不一定与客户端ID匹配。 获取客户端ID: - '&lt;%= TextBox3.ClientID%&gt;'
答案 0 :(得分:2)
自从我编写asp表单以来已经有一段时间了,但客户端(在浏览器中)的id很可能不是你想象的那样。这是我心目中Web表单的主要缺陷之一(这可能在4.0版本中变得更简单,你必须检查它)。您可以使用css类(并使用jQuery或类似方法来查找元素)或将客户端id注入java脚本,例如。
<script type = "text/javascript">
// Function to caputure client-input- Member_ID.
function store_memID() {
var mem_ID = document.getElementById('<%=TextBox3.ClientID%>').value;
return confirm('TimeLine is displayed for: ' + mem_ID);
}
</script>
更新:在评论中指出的ClientID中修复了大小写错误
答案 1 :(得分:1)
您正在使用主要用于服务器端代码的asp文本框。您放置在标记中的ID不能保证与呈现的元素的ID匹配。
您需要在浏览器中检查您的html以查找呈现的ID。 (可能会看起来像:ct100_TextBox3)并使用它。或者,如果您没有进行任何服务器端编码,最好将文本框转换为<input />
字段或<textarea />
。