0
// text Box
        &nbsp;&nbsp;<asp:TextBox ID="TextBox3"  runat="server" BackColor="Silver" 
            BorderColor="Silver" ontextchanged="TextBox3_TextChanged" 
            style="margin-left: 6px" Width="154px"></asp:TextBox>

// Submit button
        &nbsp;<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”:-

<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>

然后运行程序,在文本框中输入值并按提交然后我得到:-

“时间线显示为:空”

我一直在研究解决这个问题。不知道出了什么问题...

编辑(修复):- 我的文本框的服务器端 ID 是“TextBox3”,但这不一定与客户端 ID 匹配。获取客户端 ID:- '<%=TextBox3.ClientID%>'

4

2 回答 2

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 中的大小写错误

于 2013-01-28T23:19:38.300 回答
1

您正在使用主要用于服务器端代码的 asp 文本框。您放置在标签中的 ID 不保证与呈现的元素的 ID 匹配。

您将需要在浏览器中检查您的 html 以找到呈现的 id。(可能看起来像:ct100_TextBox3)并改用它。或者,如果您不进行任何服务器端编码,最好将文本框转换为<input />字段,或<textarea />.

于 2013-01-28T23:23:10.397 回答