【问题标题】:Not able to get value of html textboxes in javascript无法在 javascript 中获取 html 文本框的值
【发布时间】:2013-03-19 21:06:16
【问题描述】:

伙计们,我的代码中有一个问题,我想在 javascript 中获取 html 输入类型文本框的值并将值分配给隐藏字段。之后,我想在 c# 文件后面的代码中使用隐藏字段值,但隐藏字段始终包含空字符串,即使 inputtype 文本框包含值。 我的 Java 脚本:

 <script type ="text/javascript" >
        function myFunction() {
            var str1 = document.getElementById("amt3").value;
            var str2 = document.getElementById("amt4").value;
            document.getElementById("hf1").value = str1;
            document.getElementById("hf2").value = str2;
        }
    </script>

我的 HTML:

<div class="form-row row-fluid">
    <div class="span12">
        <div class="row-fluid">
            <label class="form-label span4" for="slider">
                Range slider</label>
            <div class="span8">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate >
                      <asp:HiddenField ID="hf1" runat="server" />
                      <asp:HiddenField ID="hf2" runat="server" />
                <div id="slider-range"    class="slider" >
                </div>
                <input type="text" id="amount1" style="border: 0; color: #ED7A53; font-weight: bold;
                    box-shadow: none;" />
                <input type="text" id="amt3" value="10" runat="server"     style="border: 0; color: #ED7A53; font-weight: bold;
                    box-shadow: none;" />
                <input type="text" id="amt4"  value="20" runat="server"    name="amt4" style="border: 0; color: #ED7A53;
                    font-weight: bold; box-shadow: none;" />
                    <asp:LinkButton ID="lnk" runat="server" onclick="lnk_Click" OnClientClick ="myFunction()">LinkButton</asp:LinkButton>
                    </ContentTemplate>
                </asp:UpdatePanel>

【问题讨论】:

    标签: c# javascript asp.net html


    【解决方案1】:

    您必须在 javascript 中使用 ClientID,因为如果 ClientIDMode 未设置为静态,则在生成的 html 中更改服务器控件的 ID(具有属性 runat="server")。

    var str1 = document.getElementById("<%= amt3.ClientID %>").value;
    var str2 = document.getElementById("<%= amt4.ClientID %>").value;
    document.getElementById("<%= hf1.ClientID %>").value = str1;
    document.getElementById("<%= hf2.ClientID %>").value = str2;
    

    【讨论】:

    • 你只是比我快一点:-)
    • 你都改了吗?
    • 是的,我都改了。
    • 您必须更改所有四个,同样适用于隐藏字段。应用到隐藏字段后,您可以看到结果。只需发出警报以显示值 str1。
    • 谢谢@RobAngelier,我猜不可能是你。
    【解决方案2】:

    由于 隐藏字段文本框 都是服务器端控件,因此应该使用 ClientID 访问它们

            var str1 = document.getElementById("<%= amt3.ClientID %>").value;
            var str2 = document.getElementById("<%= amt4.ClientID %>").value;
    
            document.getElementById("<%= hf1.ClientID %>").value = str1;
            document.getElementById("<%= hf2.ClientID %>").value = str2;
    

    【讨论】:

      【解决方案3】:

      一个工作示例:

      我对其进行了一些修改,使其可以在没有 ASP 控件的情况下工作。

      http://jsbin.com/aqayan/1/

      您的问题是服务器端 ID 与客户端 ID,您必须确保浏览器中的所有 ID 都是正确的。打开 Chrome 网络工具,手动检查元素是否具有您认为它们在控制台中的 ID。

      【讨论】:

      • Thx 但是我必须在代码中使用隐藏字段,而这些隐藏字段没有发生
      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多