私はこれに対する解決策を見つけていません。この問題を解決するには、新しい目が必要です。基本的に、車両をオートコンプリート検索し、選択すると、モデルの選択リストに json が入力されたフィルター リクエストが送信されます。行を作成し、追加された行ではなく最初の行モデルにのみチェーンするオートコンプリート値を選択する場合を除いて、すべて正常に機能します。メーカーに基づいてモデルに対して別のフィルターを実行する予定です (この例ではありません)。
JS:
function setAutocomplete() {
$('#vehicle_id').val("");
$text = jQuery(".veh_selector");
$.each($text, function(i, val) {
$(val).autocomplete({
source: 'vehicles.php',
minLength: 2,
select: function(event, ui) {
$('#veh_desc_id').val(ui.item.id);
$('#vehicle_id').val(ui.item.vehicle_id);
$.getJSON("vehicles.php?filter=" + ui.item.vehicle_id, function(jsonData) {
$("select.model").html(""); //clear old options
jsonData = eval(jsonData); //get json array
for (i = 0; i < jsonData.length; i++) //iterate over all options
{
for (key in jsonData[i]) //get key => value
{
$("select.model").get(0).add(new Option(jsonData[i][key], [key]), document.all ? i : null);
}
}
});
}
});
});
}
var current = 0;
var addVehicleFields = function() {
current++;
$newVehicle = $("#searchtemplate").clone();
$newVehicle.removeAttr("id");
$newVehicle.removeClass("hide_element");
$prefix = "extra" + current;
$newVehicle.children("div").children(":input").each(function(i) {
var $currentElem = $(this);
$currentElem.attr("name", $prefix + $currentElem.attr("name"));
});
$newVehicle.appendTo("#vehiclesField");
$('.remove-this').show('fast');
$('#remove-me').removeAttr('disabled');
setAutocomplete();
}
$(document).ready(function() {
setAutocomplete();
$("#addVehicle").live("click", addVehicleFields);
$('.remove-this').live('click', function() {
$(this).parent().remove();
});
});
html
<div id="models-makes">
<fieldset id="vehiclesField">
<label>Search Vehicles</label>
<div class="vehicle"></div>
</div>
</fieldset>
<div>
<div class="model-make original">
<label for="veh_desc"></label>
<input type="hidden" class="veh_selector" id="veh" name="veh" size="30"/>
</p>
<input type="hidden" id="veh_desc_id" name="veh_desc_id" />
<div class="vehicle hide_element" id="searchtemplate">
<input class="veh_selector" id="veh" name="_veh" size="30"/>
<select class="model empty">
<option>Models</option>
</select>
<select class="make empty">
<option>Makes</option>
</select>
<input name="remove-this" class="remove-this" value="Remove" type="button">
</div>
</div>
</div>
<div>
<input type="button" id="addVehicle" value="Add A Vehicle">
<input name="reset" id="reset" value="Reset" type="reset">
</div>