我是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吗?感谢您提供的任何帮助。
答案 0 :(得分:6)
SET
style="display:none;"
使用
的INSTEADVisible="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());
});
工作正常:))