1

(スクリーンショットに見られるように)テーブルの各エントリの詳細情報リンクがあり、追加情報が表示されます。

ユーザーが詳細リンクをクリックすると、そのリンクから値を取得し、非表示の入力フィールドに保存して、投稿時にそれらの値を取得できるようにすることは可能ですか?

ここに画像の説明を入力してください

「詳細」情報リンクの命名規則は次のとおりです。

<a href="#" data-student="2" class="mini-view">more</a>
<a href="#" data-student="6" class="mini-view">more</a>
<a href="#" data-student="7" class="mini-view">more</a>
<a href="#" data-student="9" class="mini-view">more</a>

したがって、すべてのリンクがクリックされた場合、次のようなデータが投稿されます。2,6,7,9-ユーザーは「詳細」情報リンクを何度でもクリックできるので、記録したいだけです。最初のクリック。

これらの値を配列に変換し、それを使用してバックエンドチェックを実行するためです。

4

3 に答える 3

2
var clickedIds = '';

$('.mini-view').on('click', function(){

    // need to check if the "more info" has already been clicked
    if(!$(this).data('clicked')){ 

         //if not, update the (serialized) list of clicked student ids:
         clickedIds = clickedIds  + $(this).data('student') + ',';

         //update that value to the hidden field
         //could have done this w/o the clickedIds var, but I think it's cleaner
         //this way:
         $('#myHiddenField').val(clickedIds);

         // then mark it as already clicked.
         $(this).data('clicked', true)

    }


});

これにより、シリアル化されたリストが「2,6,7,9」のような隠れた変数に配置されます。

于 2012-08-02T18:54:54.483 に答える
1

はい、できます。

$('a.mini-view').click(function(){
   $('#id-of-hidden-field').val($(this).attr('data-student'));
});

だから私がしたこと。

  1. リンクをクリックして添付
  2. 属性値を使用して、非表示フィールドに追加します
  3. そして、それは完了です。

複数の値を追加する場合、たとえばカンマ区切りの場合は、これを実行します

$('a.mini-view').click(function(){
    var hf = $('#id-of-hidden-field');
    var newVal = hf.val() + (hf.val().length > 0 ? ',' : '') + $(this).attr('data-student');
    hf.val(newVal);
});

そして、あなたは次のような価値観を持つでしょう1,4,23,1,19

于 2012-08-02T18:41:39.747 に答える
0

リンクをクリックするたびに、「clicked」属性がtrue /存在するかどうかを確認し、trueでない場合は、非表示の入力に値を追加してから、リンクに「clicked」属性を追加します。

このように、ユーザーがそれを複数回クリックした場合、非表示の入力に追加されるのは1回だけです。

このようなもの:

$('a.mini-view').click(function(){
    var clicked = $(this).attr("clicked");
    var value = $(this).attr("data-student");
    if (!clicked){
        var newValue = $('#hidden-field').val() + "," + value;
        $('#hidden-field').val(newValue);
        $(this).attr("clicked", true);
    }
});
于 2012-08-02T18:55:36.780 に答える