0

私は perl スクリプトを使用して、いくつかのリンク (別のページを参照するものはなく、いくつかのヒントを再表示するために使用されます)、チェックボックス、および単一の送信ボタンを含む言語テスト ページを生成します。ボタンをクリックすると、チェックボックスの内容が (POST メソッドを使用して) 渡されることは明らかですが、リンクをクリックしてどのヒントが覗かれたかを知りたいです。

現在、同様の質問が、クリックされたリンクから post の非表示の入力への store の値で回答されました。しかし、それは私にはうまくいかないようです。

私はこれを(とりわけ)頭の中に持っています

<script src="jquery.js" type="text/javascript">
  $('a.mini-view').click(function(){
    var clicked = $(this).attr("clicked");
    var value = $(this).attr("data-student");
    if (!clicked){
        var newValue = $('hiddenfield').val() + "," + value;
        $('hiddenfield').val(newValue);
        $(this).attr("clicked", true);
    }
});
</script>

これが体内にある

<form action="./index.pl" method="post">
    <input type="hidden" name="hiddenfield" id="hiddenfield">
    <a  class="mini-view" id="HSntj" href="javascript:toggle25('CSntj','HSntj');" data-student="1">More</a>
    <a id="HSnt2j" href="javascript:toggle25('CSnt2j','HSnt2j');" data-student="2" class="mini-view">More</a></span>"; 
    <span align=left id="CSnt2j" style="display: none; margin-top: 6px;">something</span>
</form>

しかし、すべての入力を index.pl スクリプトに送信すると

print $input{'hiddenfield'};

...実際には何も出力しません。他の隠し値の読み取りは問題なく機能するため、入力の解析に問題はないと確信しています。

私が間違っていることについて何か考えはありますか?

これについてあなたの助けをいただければ幸いです。

4

2 に答える 2

1

あなたのコードをjsFiddleにコピーして、動作させました。あなたの最大の問題は、隠しフィールドを正しく識別していないように見えました (つまり、$('#hiddenfield') の # 記号が欠けていたということです)。

$('a.mini-view').click(function(){
    var clicked = $(this).attr("clicked");
    var value = $(this).attr("data-student");
    if (!clicked){
        var newValue = $('#hiddenfield').val() + "," + value;
        $('#hiddenfield').val(newValue);
        $(this).attr("clicked", true);
    }
});
于 2013-04-15T21:52:20.067 に答える
0

1 つの問題は、スクリプト タグを定義した方法です。src属性とスクリプト本体の両方があります。つまり、ボディは適用されません。

これを試して:

<script src="jquery.js" type="text/javascript" />
<script type="text/javascript">
    ...blah blah
</script>

しかし、それは問題ではないと思います$(this).attr("clicked");。これで何を達成しようとしていますか?

編集:わかりました、あなたが何をしているのかわかります。カスタム属性です。それを行うためのより良い方法は、実際には HTML5 で有効な HTML である data-attribute を使用することです。

var clicked = $(this).data("clicked")

$(this).attr("clicked", true);

これは学生データにも当てはまります。次のように記述できます。

var value = $(this).attr("data-student");
于 2013-04-15T21:44:50.177 に答える