我定义了一个标签选择器,它将根据“组”生成复选框输入。如果我选择我想要的标签并按下完成按钮,它应该返回一个字符串来设置文本输入的值。
以下是相关代码。问题是它只在第一次运行良好。例如,第一次,如果我在标签中检查了'jquery','javascript',
console.log('output is:' + tags);
打印出'输出是:jquery,javascript'。作品!然后我再次使用它并选择'jquery','javascript','bootstrap',它会返回
output is: jquery,javascript,bootstrap
output is:
'jquery','javascript','bootstrap'再一次,它返回
output is: jquery,javascript,bootstrap
output is:
output is:
似乎按下了完成按钮,该函数被重复调用。坚持了几个小时,但无法弄清楚。非常感谢您的回答!谢谢
(function(){
$.fn.tagPicker = function(source,options){
var settings = $.extend({
perRow : 3
},options);
$.fn.attachRow = function(row,col){
//codes here
...
}
$.fn.attachPicker = function(){
//codes here
// generate html for checkbox inputs
...
};
var $input = this;
if($('.tag-picker').length == 0){
$input.attachPicker();
$('body').on('click','.tag-picker .close-picker',function(){
$('.tag-picker').remove();
})
$('.tag-picker .close-picker').off();
$('body').on('click','.tag-picker #btn-done', function(){
var tags = getTags();
$('.tag-picker').remove();
console.log('output is:' + tags);
$input.val(tags);
});
}
function getTags(){
var t = [];
$('.tag-picker input').each(function(){
if($(this).is(':checked')) t.push($(this).attr('id'));
})
return t.join(',');
}
}
})(jQuery);
$('body').on('click','input.participant',function(){
$(this).val('');
$(this).tagPicker(group);
})