2012-08-02 47 views
0

我有一个表中的每个条目更多的信息链接(如截图所示),显示额外的信息。从点击链接存储值到隐藏输入的帖子

当用户点击更多信息链接时,它可能从该链接获取值并将其存储在隐藏的输入字段中,因此在发布后我可以获取这些值?

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 - 用户可以多次点击“更多”信息链接,因此我只想在第一次点击时录制它。

因为我打算将这些值转换为数组并使用它来做一些后端检查。

回答

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

是的,它可以做到。

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

+0

只增加了一个值(的最后一个环节点击) – Brad 2012-08-02 19:05:32

0

你可以做的是每次点击链接时,检查“clicked”属性是否为true/exists,如果不是true,则将该值添加到某个隐藏的输入,然后将“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); 
    } 
});