繁体   English   中英

Javascript无法从隐藏的TextBox中读取值-JQuery C#

[英]Javascript not reading value from hidden textBox - JQuery C#

我不是使用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之类的东西吗? 感谢您的任何帮助,您可以提供。

style="display:none;"

代替使用

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>
var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').val()

应该

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

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

您也可以尝试

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

尝试使用

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

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

您无需将原始的asp.net控制标记传递给选择器。 只需id名称即可。 这应该工作。

普通的旧JavaScript应该是

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

jQuery应该是

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

您是否尝试过将文本框更改为隐藏字段(这就是您要执行的操作)。

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

和js:

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

效果很好:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM