Вопрос о том, как прочитать значение из HTML-элемента с помощью jQuery - PullRequest
0 голосов
/ 06 сентября 2011

Сначала я подумал, что это должно быть очень легко.Просто используйте $ (селектор) .val (), чтобы получить значение.Однако у меня много трудностей.

Позвольте мне привести пример.

Предположим, у меня есть два текстовых поля, и они прикреплены к плагину jQuery AutoComplete.

Когда я нажимаю на первое текстовое поле, я делаю вызов ajax, в случае успеха я связываю возвращенные данные в это текстовое поле, на которое нажали, и hiddenField, который используется для хранения возвращенного идентификатора.

Весь прогресслегко, я делаю вызов Ajax и идет успешно.Скрытое поле теперь имеет возвращаемое значение.

Когда я создаю второе событие автозаполнения, и для этого я пытаюсь прочитать значение из скрытого поля.

На этот раз не удалось.Не из-за вызова ajax, а потому, что значение равно нулю ...

Я в замешательстве.Потому что hiddenField имеет определенную ценность там.Но почему я не могу это легко прочитать?

Вот некоторые коды, которые у меня есть

function DepartCityAutoComplete() {
$("#txtDeparture").autocomplete({
    minLength: 3,
    source:
            function (request, response) {
                $.ajax({
                    type: "POST",
                    url: "/AjaxDataServices.asmx/DepartCityAutoComplete",
                    data: '{"keyword":"' + request.term + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        response($.map(data.d, function (item) {
                            return { value: item.CityName + ", " + item.StateShortName, id: item.CityID }
                        }))
                    },
                    error: function () {
                        alert("An unexpected error has occurred during processing.");
                    }
                });
            },
    select: function (event, ui) {
        $("#txtDeparture").val(ui.item.value);
        $("#hiddenDepartCityID").val(ui.item.id);
    }
});

}

function DestCityAutoComplete() {

var departCityID = $("hiddenDepartCityID").val();

$("#txtDestination").autocomplete({
    minLength: 3,
    source:
            function (request, response) {
                $.ajax({
                    type: "POST",
                    url: "/AjaxDataServices.asmx/DestCityAutoComplete",
                    data: '{"keyword":"' + request.term + '","id":"' + departCityID + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        response($.map(data.d, function (item) {
                            return { value: item.CityName + ", " + item.StateShortName, id: item.CityID }
                        }))
                    },
                    error: function () {
                        alert("An unexpected error has occurred during processing.");
                    }
                });
            },
    select: function (event, ui) {
        $("#txtDestination").val(ui.item.value);
        $("#hiddenReturnCityID").val(ui.item.id);
    }
});

}

Может кто-нибудь дать мнелюбое предложение?Большое спасибо.

Вот мое предположение

Это из-за $ (document) .ready (function ()

У меня естьследующий код:

$(document).ready(function () {
DepartCityAutoComplete();
DestCityAutoComplete();

});

Таким образом, эти две функции запускаются при загрузке страницы.Несмотря на то, что первая функция автозаполнения присваивает какое-либо значение в hiddenField, веб-браузер этого не знает.Пожалуйста, поправьте меня, если я ошибаюсь.Спасибо

1 Ответ

0 голосов
/ 06 сентября 2011
 var departCityID = $("hiddenDepartCityID").val();

это не должно быть

 var departCityID = $("#hiddenDepartCityID").val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...