将点击链接的值存储到post的隐藏输入中

时间:2012-08-02 18:37:00

标签: jquery html

我有一个表格中每个条目的更多信息链接(如屏幕截图所示),显示其他信息。

当用户点击更多信息链接时,它是否有可能从该链接中获取值,将其存储在隐藏的输入字段中,那么在帖子中我可以获取这些值吗?

enter image description here

“更多”信息链接的命名约定是:

<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 - 用户可以根据需要多次点击“更多”信息链接,所以我只想要在第一次点击时记录它。

因为我要将这些值转换为数组并使用它来进行后端检查。

3 个答案:

答案 0 :(得分: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'

答案 1 :(得分:1)

是的,可以做到。

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

所以我做了什么。

  1. 点击链接
  2. 使用属性值并将其添加到隐藏字段
  3. 已经完成了。
  4. 如果您想添加多个值,例如逗号分隔然后执行此操作

    $('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

    等值

答案 2 :(得分:0)

你可以做的就是每次点击链接,检查“clicked”属性是否为true / exists,如果不是,则将值添加到某个隐藏输入,然后将“clicked”属性添加到链接。

这样,如果他们多次点击它,它只会将它添加到隐藏的输入一次。

这样的事情:

$('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);
    }
});