JQuery диалог очищает мои поля формы, и мне нужно вернуть значение из JQuery диалога - PullRequest
2 голосов
/ 09 июня 2010

1.) У меня есть диалоговое окно jQuery, которое открывается всякий раз, когда фокусируется определенное текстовое поле.Содержимое диалогового окна загружается из ajax, а уникальный идентификатор текстового поля, на которое был направлен фокус, передается в вызове ajax (например, вот так):

$('[name=start_airport[]],[name=finish_airport[]]').click(function(){<br> var id = $(this).attr('id');<br> if($('#use_advanced_airport_selector').attr('checked')) {<br> $('#advanced_airport_selector').dialog({<br> open : function() {<br> $(this).load('/flight-booker/advanced-airport-selector.php?callerID='+id);<br> }<br> });<br> $('#advanced_airport_selector').dialog('open');<br> }<br> });<br></p> <p>(where advanced_airport_selector is an empty div)

, ЧТО ЧАСТЬ РАБОТАЕТ В РАМКАХ.Однако, когда я делаю свой вызов ajax в моем диалоге, все значения моей формы сбрасываются!Независимо от того, что я делаю, когда открывается это диалоговое окно, все значения формы сбрасываются (а не только значение текстового поля, которое было выделено).Я просто не понимаю, что вызвало бы такое поведение!

Но это только проблема № 1.

2.) Мне нужно иметь возможность вернуть значение из этого диалогового окна.Я передаю идентификатор в запросе ajax, чтобы я мог использовать селектор jquery для обновления значения вызывающей стороны после выполнения определенных действий в диалоговом окне.Однако я не могу получить доступ к этому текстовому полю из-за DOM_ERRORS, с которым я никогда не сталкивался.Это не имеет никакого смысла!

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

1 Ответ

1 голос
/ 30 июня 2011

Ошибки DOM в проблеме № 2 могут быть вызваны квадратными скобками в вашем селекторе.Квадратные скобки ([и]) являются специальными символами в jQuery, поэтому вы должны экранировать их следующим образом:

$('[name=start_airport\\[\\]],[name=finish_airport\\[\\]]').click(function(){
...
});

С http://api.jquery.com/category/selectors/:

Если вы хотите использовать любой изметасимволы (такие как! "# $% & '() * +,. / :; <=>? @ [] ^` {|} ~) как буквальная часть имени, вы должны экранировать символс двумя обратными слешами: \\. Например, если у вас есть элемент с id = "foo.bar", вы можете использовать селектор $ ("# foo \\. bar").

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