Цитата:
сделал так: $(document).on('change', '#cons-list', function () { var value = $('#cons-list').val(); if (value ) { $("#page-preloader").fadeIn(800); $(".dialog").dialog('close'); jQuery.ajax({ type: 'POST', url: URL, data: { 'action': 'validateAndShow', 'value': '' + value }, success: function (data) { $('.result').html(data); $("#page-preloader").fadeOut(800); } }) } }) вывожу все на пхп: print_r($_POST); первый результат: Array ( [action] => validateAndShow [value] => value) второй: Array ( [action] => validateAndShow [value] => ) |
Я не знаю чего вы там делаете, поэтому не будут гадать чего у вас не так, ибо полного представления нет чего и как. Могу только заметить следующее - если получаемый список после первичного запроса заменяет предыдущий, то делегирование обработки его события по его ID, это нормально. Но если получаемый список добавляется в документ как новый список, но это уже ошибка.
Еще можно сказать, что 'value': '' + value - никчемное. |
Цитата:
"чего" я "там" делаю - описано в теме. Не понятно что-то конкретное? уточните/спросите, постараюсь донести/объяснить/показать. Про никчемное - не понял. если имеете ввиду то, что '' + <- вот это лишнее, ну что ж, давайте уберу, если глаза Вам режет. Давайте оставаться людьми. [/OFFTOP] по теме: пресловутый проблемный "список" - он же селект, это результат вывода массива из бд со своими ид в атрибутах value. список этот выводится внутри тела тега див с ид="dialog-content", то есть, контент окна-диалога($('.dialog')). и в первый и во второй раз - это единственный тег селект с ид = "cons-list", но, в первый и во второй раз - значения там разные. |
Syfer43,
все что рассказано еще не дает представления о том, что творится на странице. Не понятно почему '' + значение списка, это никчемное занятие? А зачем к значению списка добавлять пустую строку перед отправкой его на сервер? $('body').on('change', '#cons-list', function () { - делегировать нужно ближайшему родителю if (this.value) { - отправление будет только в том случае, если выбрана опция с непустым значением - value="" - только так, а не так value=" " или value="0", ибо в последнем случае тогда if (+this.value) и отправляемые данные data: { 'action': 'validateAndShow', 'value': this.value }, То есть у вас вообще не должно быть отправки, если пустое значение, а у вас то есть отправление! Ну так добавьте в код проверку и узнаете причину: $('body').on('change', '#cons-list', function () { console.log(this.value) |
Вангую, что не зря вы ругались на код, который был фекальным. переписал скрипт, разделил, использовал все наставления - работает. Спасибо!
|
<select> <option selected disabled>Select...</option> <option value="1">AAAAA</option> <option value="2">BBBBB</option> </select> Попробуйте выбрать первую опцию. То есть событие списка будет наступать только при выборе опции со значением, а значит нет необходимости и проверять - if (this.value) |
да, спасибо! Вы очень помогли!
|
Часовой пояс GMT +3, время: 01:24. |