Получение поля автозаполнения jQuery - PullRequest
3 голосов
/ 17 ноября 2009

Я использую плагин автозаполнения jQuery и подключил поле ввода для извлечения значений из внутренней базы данных при вводе текста, который затем можно выбрать.
Затем у меня есть второе поле ввода, которое я подключил аналогичным образом, однако я хочу передать значение первого поля ввода в качестве параметра строки запроса в вызове ajax autocomplete, чтобы результаты автозаполнения могли быть отфильтрованы.
Я попытался с помощью метода .val () первого поля ввода, но всегда кажется, что это возвращает пустую строку, если я не позволю форме для обратной передачи. Я также попытался просто использовать getElementById ('xxx'). Value, но это возвращает нулевое значение.
Можно ли каким-то образом получить динамическое значение, выбранное в первом поле, чтобы передать его в свой jjuery-вызов ajax на сервер?
Код ниже, некоторые из них удалены для краткости:

<% using (Html.BeginForm()) {%>
    <script language="javascript">
        $(document).ready(function(){
            $("#Make").autocomplete('/MyController/AutoCompleteMake', {
                dataType: 'json',
                parse: function(data) {
                    var rows = new Array();
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = { data: data[i], value: data[i], result: data[i] };
                    }
                    return rows;
                },
                formatItem: function(row) {
                    return row;
                },
                delay: 40
            });

            $("#Range").autocomplete('/MyController/AutoCompleteRange?Make=' + $('input[name=Make]').val(), {
                same as above .......
            });
        });
  </script>
    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Make">Make:</label>
            <%= Html.TextBox("Make") %>
            <%= Html.ValidationMessage("Make", "*") %>
        </p>
        <p>
            <label for="Range">Range:</label>
            <%= Html.TextBox("Range") %>
            <%= Html.ValidationMessage("Range", "*") %>
        </p>
<% } %>

Это часть $ ('input [name = Make]'). Val (), которая всегда возвращает пустое значение, даже если оно было выбрано.

Я только начал работать с jQuery и MVC, поэтому любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 17 ноября 2009

Вам необходимо использовать функцию extraParams:

$("#Make").autocomplete(url, {
   extraParams: {
       yourValue: function() { return $("input[name=Make]").val(); }
   }
}); 

Это будет затем передано в HttpContext вашей цели.

Это можно извлечь следующим образом:

string valueToUse = context.Request.QueryString["yourValue"];

Из автозаполнения jQuery Документация :

Часто одно автозаполненное поле зависит на значение другого поля. В этом В этом случае опция extraParams может обеспечить необходимую динамику Параметр

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...