「グループ」に基づいてチェックボックス入力を生成するタグピッカーを定義します。必要なタグを選択して[完了]ボタンを押すと、テキスト入力の値を設定するための文字列が返されます。
関連するコードは次のとおりです。問題は、それが最初にうまく機能するだけであるということです。たとえば、初めてタグの「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);
})