var filters_used = new Array();
$('#filter-text').keyup(function(k) {
$('#error').html('');
if (k.keyCode == 13) {
$('#add-filter').click();
}
});
function reg_remove() {
$('.remove-filter').click(function() {
console.debug("remove-filter.click()");
var col = $(this).children('td:nth-child(2)').html();
var index = $.inArray(col, filters_used);
filters_used.splice(index, 1);
$(this).parents('.filter').remove();
return false;
});
}
function check_value() {
var flag = true;
var value = $('#filter-text').val();
var col = $('#filter-type').val();
var reg = /[^0-9a-zA-Z\s\-]/;
if (value.match(reg) || value.trim() === "") {
flag = false;
$('#error').html('Only letters, numbers, spaces, and dashes (-) are allowed.');
} else if ($.inArray(col, filters_used) >= 0) {
flag = false;
$('#error').html('That column is already being filtered.');
}
return flag;
}
$('#add-filter').click(function() {
if (check_value()) {
var value = $('#filter-text').val();
var col = $('#filter-type').val();
$('#filter-text').val('');
appendstr = '<tr class="filter"><td>' + value + '</td><td>' + col + '</td><td>' + '<a href="" class="remove-filter">Remove</a></td></tr>';
$('#filter-form').after(appendstr);
filters_used.push(col);
reg_remove();
//queryDB();
}
});
function get_filters() {
}?
基本的に、ユーザーがフィルターのリストを作成できるようにしようとしているコードを含むフィドルへのリンク。それらを追加するとうまくいくように見えますが、remove() 関数は、フィルター項目が 1 つしかない場合にのみ適切に機能します。最初に作成してから、一番下のアイテムの削除をクリックすると、そのアイテムの onclick() 関数が 2 回呼び出され、その理由が一生わかりません。