2

私は 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 か何かが必要ですか? ご協力いただきありがとうございます。

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.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 の最初の 2 行も移動する必要があります。

<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 に答える
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:HiddenField runat="server" ID="txtHiddenKeywordArray" Value="horse, track" />

そしてjs:

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

うまく動作します:)

于 2012-06-03T13:52:22.163 に答える