Javascript没有从隐藏的textBox中读取值 - JQuery C#

时间:2012-06-03 04:12:01

标签: c# javascript jquery asp.net

我是JavaScript / JQuery的非专家,我无法弄清楚为什么我的脚本不起作用。当我的C#页面加载时,我有一个隐藏的textBox txtHiddenKeywordArray,动态填充逗号分隔值,如...马,越野车,轨道

我正在尝试使用jquery.highlight-3.js中的突出显示功能,其中我有一个标签文本字段,其中包含并突出显示关键字列表中的字词。我正在使用脚本

<script language="javascript" type="text/javascript">
    var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').val()
    myArray = myString.split(" ");
    $(document).ready(function () {
        for (i = 0; i < myArray.length; i++)
            $("p").highlight(myArray[i])
    });
</script>

这是textBox声明:

<asp:TextBox ID="txtHiddenKeywordArray" ClientIDMode="Static" runat="server" Visible="false"></asp:TextBox>

当我对var myString的值进行硬编码时,它工作得很好。我已经尝试过研究它并继续看到我完成它的方式的相同例子。该页面使用MasterPage。这会影响吗?

知道如何让脚本看到文本框中的值吗?我需要RegisterStartUpScript吗?感谢您提供的任何帮助。

6 个答案:

答案 0 :(得分:6)

SET

style="display:none;"

使用

的INSTEAD
Visible="false" 

用于TextBox。

如果将TextBox设置为visible = false。然后,文本框将不会在html中呈现。所以,将无法访问。

例如:

<asp:TextBox ID="txtHiddenKeywordArray" ClientIDMode="Static" runat="server" style="display:none;"></asp:TextBox>

JS代码:

<script language="javascript" type="text/javascript">      
$(document).ready(function () {
 var myString = $('#<%=txtHiddenKeywordArray.ClientID%>').val();
    myArray = myString.split(" ");  
    for (i = 0; i < myArray.length; i++)
        $("p").highlight(myArray[i])
});

</script>

答案 1 :(得分:0)

var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').val()

应该是

var myString = $('#<%=txtHiddenKeywordArray.ClientID%>').val();

因为.val()适用于jQuery对象。

您也可以尝试

var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').value;

答案 2 :(得分:0)

尝试使用

var myString = $('#<%=txtHiddenKeywordArray.ClientID%>').val();

答案 3 :(得分:0)

@Kapil和@thecodeparadox的建议是必要的。您还需要在 $ document.ready(...)中移动前两行javascript:

<script language="javascript" type="text/javascript">
$(document).ready(function () {
    var myString = $('#<%=txtHiddenKeywordArray.ClientID%>').val();
    myArray = myString.split(" ");
    for (i = 0; i < myArray.length; i++)
        $("p").highlight(myArray[i])
});

</script>

答案 4 :(得分:0)

您不需要将原始asp.net控件标记传递给选择器。 只需id的名称即可。 这应该有用。

普通的旧Javascript应该是

var myString = document.getElementById('txtHiddenKeywordArray').value;

jQuery应该是

var myString = $('#txtHiddenKeywordArray').val();

答案 5 :(得分:0)

您是否尝试过将文本框更改为隐藏字段(因为您正在尝试这样做)。

<asp:HiddenField runat="server" ID="txtHiddenKeywordArray" Value="horse, track" />

和js:

$(document).ready(function () {
    alert($("input[id$='txtHiddenKeywordArray']").val());
});

工作正常:))