Получить значение идентификатора после автозаполнения JQuery - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть два поля TextBoxFor, которые используют автозаполнение.После того, как они заполнены либо выбранными значениями автозаполнения, либо ручными значениями, другие функции javascript при обращении к ID.val () становятся пустыми.Что нужно добавить / изменить, чтобы получить эти значения?Заранее спасибо!

РЕДАКТИРОВАТЬ: Предварительное заполнение поля в контроллере перед отправкой в ​​просмотр позволяет вызову функции получить правильное предварительно заполненное значение.Похоже, что значение поля не распознается, только если пользователь пытается отредактировать поле и / или использовать автозаполнение.

EDIT2: Я попытался связать функцию с document.ready followпо щелчку и document.on по щелчку, и никто не находит значение в текстовом поле ID.

Razor:

<div class="row">
    <div class="col-lg-12">
        @Html.LabelFor(m => m.AddedWorkmate, "Workmate To Add", new { @class = "control-label" })
        @Html.TextBoxFor(m => m.AddedWorkmate, new { data_autocomplete_url = Url.Action("GetWorkmates"), @class = "form-control" })
    </div>
</div>
<div class="row">
    <div class="col-lg-4">
        <button type="button" id="bUser" name="bUserButton" class="btn btn-primary btn-sm">Add Workmate Recipient</button>
    </div>
</div>

Сценарии:

function ExampleFunction() {
    var $addedW = $("#AddedWorkmate");//This should work, but apparently doesn't
    var textTest = $addedW.text(),// = ""
        valueTest = $addedW.val();// = ""
    //Stuff to do
}

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Я думаю, что ввод не обнаружит изменения, если вы введете автозаполнение, и у вас все еще будет фокус.Вы пытались выйти из текстового поля и затем позвонить ExampleFunction?

Вы также можете привязать ExampleFunction к событию input этого текстового поля. input запускается при вводе или вставке пользователем, поэтому оно также должно работать с автозаполнением.

(function(){
      $('#AddedWorkmate').on("input", ExampleFunction);
   }
)();

function ExampleFunction() {
    var text = $(this).val();
}

Редактировать:

Попробуйте выполнить следующие действия:

  1. Оставьте автозаполнение.Введите или вставьте текст в текстовое поле m => m.AddedWorkmate, например test.
  2. Откройте консоль.
  3. Введите и позвоните $("#AddedWorkmate).val().
  4. Вы должны получить ответ"test".
  5. Если у вас это есть - у вас нет ошибки в DOM.
  6. Затем попробуйте привязать событие к input, например,
(function(){
      $('#AddedWorkmate').on("input", function(){console.log('test')});
   }
)();
Если это входит в консоль при вводе - у вас правильная привязка. Затем сосредоточьтесь на получении значения.На данный момент это должно быть внутри $(this).val(), я не вижу другой возможности.Если оно не определено, а значение по-прежнему пустое, вы делаете что-то не так, выходя за рамки вопроса. Если вам удалось получить значение, то объедините его с автозаполнением - оно должно работать.
0 голосов
/ 28 февраля 2019

За всем этим произошла небрежная ошибка: поле было объявлено как @HiddenFor ранее на веб-странице.Эта строка была удалена после просмотра того, что входные данные были «скрыты» в исходном коде, и все работает нормально.

0 голосов
/ 28 февраля 2019

Добавьте нужный идентификатор в текстовое поле, чтобы вы могли ссылаться на него из jQuery.

@Html.TextBoxFor(m => m.AddedWorkmate, new { data_autocomplete_url = Url.Action("GetWorkmates"), @class = "form-control", id="AddedWorkmate" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...