jsonで入力フィールドを入力して検索しようとすると問題が発生します。 1つのフィールドに対してのみ機能し、結果を選択すると、すべてのフィールドに追加されます。ダイナミックDOMを使用してkeyupで右端に.valを追加
$('#add-row').on('click', function() {
var row = $('.empty-row.screen-reader-text').clone(true);
row.removeClass('empty-row screen-reader-text');
row.insertBefore('#repeatable-fieldset-one tbody>tr:last');
return false;
});
$('.remove-row').on('click', function() {
$(this).parents('tr').remove();
return false;
});
私のHTML構造:
私は新しい行を追加
<?php
if ($repeatable_fields) :
foreach ($repeatable_fields as $field) { ?>
<tr>
<td>
<input class="searchterm" type="text" class="widefat" name="name[]" value="existing value" />
</td>
<td><a class="button remove-row" href="#">Remove</a></td>
</tr>
<?php
}
else :
//show a blank one
?>
<tr>
<td>
<input class="searchterm" type="text" class="widefat" name="name[]" />
</td>
<td><a class="button remove-row" href="#">Remove</a></td>
</tr>
<?php endif; ?>
<!-- empty hidden one for jQuery -->
<tr class="empty-row screen-reader-text">
<td>
<input class="searchterm" type="text" class="widefat" name="name[]" />
</td>
<td><a class="button remove-row" href="#">Remove</a></td>
</tr>
これは正常に動作しますが、私はいくつかのフィールドを持っている場合には、同じ値を持つすべてのフィールドを埋めます。私は.valをすべて.searchtermに設定したことを理解しています。 しかし、私はそれを管理する方法を知ることができません...
結果を選択するときは、それぞれの入力のために入力して新しい結果を得る必要があります。
jQuery(document).ready(function(){
jQuery(".searchterm").live('keyup', function(e) {
var q = jQuery('.searchterm').val();
var regex = new RegExp(q, "i");
jQuery.getJSON("s_json.json",
{
srsearch: regex,
action: "query",
list: "search",
format: "json"
},
function(data) {
jQuery("#results").empty();
jQuery("#results").append("Results for <b>" + q + "</b>");
//console.log(data);
jQuery.each(data, function(i,item){
if ((item.name.search(regex) != -1) || (item.ticker.search(regex) != -1)) {
//console.log(item);
jQuery("#results").append('<a class="result" data-value="' + item.ticker + '">' + item.ticker + '/' + item.name + '<a>');
}
});
});
});
jQuery('#results a').live('click', function() {
var value = jQuery(this).attr("data-value");
var input = jQuery('.searchterm');
input.val(value);
jQuery("#results").empty();
return false;
});
});
感謝を! ***結果***を選択すると値が分離されますが、2番目の入力は検索されません。次の入力に何を入力しても、最初の入力の結果が表示されます。 – dkruchok