我有以下HTML,
<ul class="holder" style="width: 512px;">
<li id="pt_5uZqW99dmlgmiuCTJiPHDC9T9o2sfz0I"
rel="test1@gmail.com"
class="bit-box">test1@gmail.com<a href="#" class="closebutton"></a>
</li>
<li id="pt_9O0pMJDhtNbRgU1vNM8He8Vh9zpJ1tcE"
rel="test2@gmail.com"
class="bit-box">test2@gmail.com<a href="#"
class="closebutton"></a>
</li>
<li id="pt_U8JH5E9y5w4atm4CadEPvuu3wdh3WcBx"
rel="test3@gmail.com"
class="bit-box">test3@gmail.com<a href="#"
class="closebutton"></a></li>
<li id="Project_update_user_id_annoninput"
class="bit-input">
<input type="text" autocomplete="off" size="0" class="maininput"></li>
</ul>
<input id="removeuser" value="" />
当我点击那个li时,我需要将li的值存储在隐藏的输入框中。 如果我点击前两个li,我需要存储像
这样的值<input id="removeuser" value="test1@gmail.com,test2@gmail.com" />
这就是我每次点击li时都需要附加输入值。
我用了一个,
jQuery(document).ready(function(){
jQuery("a.closebutton").click(function(){
jQuery("input#removeuser").val(jQuery.map(jQuery(this).parent().attr('rel')).join(","));
});
});
但它不起作用。我可以这样做吗?
答案 0 :(得分:2)
jQuery(document).ready(function(){
jQuery("a.closebutton").click(function(){
jQuery("input#removeuser").val(jQuery("input#removeuser").val() + "," + jQuery(this).parent().attr('rel'));
$(this).remove();
return false;
});
});
答案 1 :(得分:1)
这个小提示修复了您的问题:http://jsfiddle.net/pratik136/zVmwg/
我做的第一个更改是在<a />
标记内移动您的文字。这允许您按预期单击它们。
接下来,我将JS
更改为:
jQuery(document).ready(function() {
jQuery("a.closebutton").click(function(a) {
var v = jQuery(this).parent().attr('rel');
var t = jQuery("input#removeuser").val();
if (t.indexOf(v) < 0) {
if(t.length>0){
t += ",";
}
jQuery("input#removeuser").val(t + v);
}
});
});
我添加了额外的检查以确保没有输入重复项,并且只在必要时才附加逗号。
答案 2 :(得分:0)
首先我建议您使用html safe rel
属性
data-*
属性(在(X)HTML中具有特定含义的特定含义)
像这样:
<li id="pt_5uZqW99dmlgmiuCTJiPHDC9T9o2sfz0I" data-email="mdineshkumarcs@gmail.com"
class="bit-box">mdineshkumarcs@gmail.com<a href="#" class="closebutton"></a></li>
要访问此属性,只需使用jQuery $(elem).attr('data-email')
现在解决方案没有重复:
jQuery(document).ready(function(){
jQuery("a.closebutton").click(function(){
var value = $(this).parent().attr('data-email');
var values = $("input#removeuser").val().split(',');
var is_in = false;
// already in?
$.each(values, function(i, e){
if(e == value) {
is_in = true; return false; // set and exit each
}
});
if (!is_in) {
values.push(value);
$("input#removeuser").val(values.join(','));
}
return false;
});
})
答案 3 :(得分:0)
尝试:
var arr = [];
$(".closebutton").click(function(e) {
e.preventDefault();
var email = $(this).parent("li").attr("rel");
if( $(this).hasClass("added") ) {
arr= $.grep(arr, function(value) {
return value != email;
});
$(this).removeClass("added");
}
else {
arr.push( email );
$(this).addClass("added");
}
$("input[id='removeuser']").val( arr.join(",") );
});
答案 4 :(得分:0)
我已将工作代码放在jsFiddle上,以便您可以看到它的实际效果。
jQuery(document).ready(function(){
jQuery("a.closebutton").bind('click', function(){
var data = $(this).parent().attr('rel');
if($("#removeuser").val() == ""){
$("#removeuser").val(data);
} else {
$("#removeuser").val(", "+data);
}
$(this).parent().hide();
});
});
此处,我点击后删除了li
。我可以相信使用.toggle()
函数来启用用户也可以从#removeuser
中删除值。
希望这有帮助!