JQuery найти элемент вне typeahead «блок»

0

Я пытаюсь закодировать динамическую форму, где вы можете добавить несколько движков к транспортному средству. Вот метод 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();
Теги:
typeahead

1 ответ

0
Лучший ответ

Попробуй это:

$(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
            }
        }
    });
});
  • 1
    Большой! Оно работает. На самом деле, sBrand = $ (elem) .val (); получает текущее входное значение. Но sBrand = $ (elem) .closest (". Engine"). Find ("# sBrand"). Val (); работает просто отлично!
  • 0
    Да, пропустил это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню