2

我不是 JavaScript / JQuery 方面的专家,我无法弄清楚为什么我的脚本不起作用。当我的 C# 页面加载时,我有一个隐藏的文本框 txtHiddenKeywordArray,它会动态填充逗号分隔的值,例如... horse、buggy、track

我正在尝试使用 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>

这是文本框声明:

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

当我硬编码 var myString 的值时,它工作得很好。我已经尝试对其进行研究,并不断看到我所做的相同示例。该页面确实使用了 MasterPage。这会影响它吗?

知道如何让脚本查看文本框中的值吗?我需要 RegisterStartUpScript 或其他什么吗?感谢您的任何帮助,您可以提供。

4

6 回答 6

6

style="display:none;"

而不是使用

Visible="false" 

为您的文本框。

如果将 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>
于 2012-06-03T04:16:55.650 回答
0

您是否尝试过将文本框更改为隐藏字段(因为这就是您想要做的)。

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

和js:

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

工作得很好:)

于 2012-06-03T13:52:22.163 回答
0
var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').val()

应该

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

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

你也可以试试

var myString = document.getElementById('<%=txtHiddenKeywordArray.ClientID%>').value;
于 2012-06-03T04:16:32.137 回答
0

尝试使用

var myString = $('#<%=txtHiddenKeywordArray.ClientID%>').val();
于 2012-06-03T04:17:59.647 回答
0

您不需要将原始 asp.net 控制标记传递给您的选择器。只是id应该工作的名称。这应该有效。

普通的旧 Javascript 应该是

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

jQuery应该是

var myString = $('#txtHiddenKeywordArray').val();
于 2012-06-03T13:28:11.780 回答
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>
于 2012-06-03T04:33:28.227 回答