Я пытаюсь закодировать динамическую форму, где вы можете добавить несколько движков к транспортному средству. Вот метод get, который возвращает форму html, добавляет ее в DOM, а затем применяет поведение типа:
$.get("/editor/engineForm", function(formHtml) {
$("#engineZone").append(formHtml);
form = $("form.engine:last");
$(form).find("#sBrand").typeahead({
remote: "/editor/engineModelBrand"
});
$(form).find("#sModel").typeahead({
remote: {
replace : function() {
sBrand = $(form).find("#sBrand").val();
console.log("Brand :" + sBrand);
return "/editor/engineModelModel?sBrand=" + sBrand
}
}
});
});
Обратите внимание на каскадное завершение typeahead: sModel.typeahead.remote использует значение sBrand для своего запроса.
Проблема в том, что у меня есть несколько форм:
$(form).find("#sBrand").val();
Возвращает значение для ввода # sBrand в последней созданной форме, а не в том, которое соответствует текущему входу # sModel.
Вот код Html для иллюстрации:
<div class="engine">
<form action="/editor/engineSave" method="GET" class="engine">
<div class="clearfix " id="sBrand_field">
<label for="sBrand">sBrand</label>
<div class="input">
<input type="text" id="sBrand" name="sBrand" value="" class="sBrand">
</div>
</div>
<div class="clearfix " id="sModel_field">
<label for="sModel">sModel</label>
<div class="input">
<input type="text" id="sModel" name="sModel" value="" class="sModel">
</div>
</div>
</form>
</div>
<div class="engine">
<form action="/editor/engineSave" method="GET" class="engine">
<div class="clearfix " id="sBrand_field">
<label for="sBrand">sBrand</label>
<div class="input">
<input type="text" id="sBrand" name="sBrand" value="" class="sBrand">
</div>
</div>
<div class="clearfix " id="sModel_field">
<label for="sModel">sModel</label>
<div class="input">
<input type="text" id="sModel" name="sModel" value="" class="sModel">
</div>
</div>
</form>
</div>
Как я могу получить jquery, чтобы найти правильный вход?
Я пытался:
$(this).closest("div").find("#sBrand").val();
$(this).find("#sBrand").val();
Попробуй это:
$(form).find("#sModel").each(function (index, elem) {
$(elem).typeahead({
remote: {
replace: function () {
sBrand = $(elem).closest(".engine").find("#sBrand").val();
console.log("Brand :" + sBrand);
return "/editor/engineModelModel?sBrand=" + sBrand
}
}
});
});