无法在javascript中获取html文本框的值

时间:2013-03-29 06:36:50

标签: c# javascript asp.net html

伙计我的代码中有一个问题,我想在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>

3 个答案:

答案 0 :(得分:2)

您必须在javascript中使用ClientID,因为如果ClientIDMode未设置为static,则在生成的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;

答案 1 :(得分:1)

由于 隐藏字段 文本框 都是服务器端控件,因此应使用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;

答案 2 :(得分:0)

一个工作示例:

我修改了一下,使它在没有asp控件的情况下工作。

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

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