element val() после ajax
Добрый день, уважаемые участники форума, специалисты!
имеем: Тело документа, обновляемое по событиям(суть обновления - загрузка нужного шаблона страницы, то есть, наполнение <div> контентом нужного мне шаблона, а так же, передача данных от пользователя в систему посредством $_POST, валидация данных, и, в случае успешной валидации - запись данных в переменную $_SESSION). Пример события: Пользователь ввел две переменных, после этого, система, проверив данные, сделала выборку из БД, и предоставила результаты в виде селекта, с опциями - строками бд(идентификаторы), выбрав из списка нужный идентификатор, пользователь получает полную выписку. В случае, если результаты пустые/не те, пользователь нажимает назад, после чего подгружается предыдущий шаблон, где он может повторить ввод данных. Ввод данных и выборки опций происходят в диалоговом окне. Суть проблемы: При попытке повторного ввода данных, в переменной $_POST['account'] не передается ничего, т.е. пусто. Диалоговое окно: $(".dialog").dialog({ modal: true, autoOpen: false, width: 450, show: { effect: "fade", duration: 700 }, hide: { effect: "fade", duration: 200 } }); <div class="dialog" title="Укажите данные"> <div class="dialog-content"> <label for="val1-code">Введите Val1:</label> <input type='number' name='val1' id="val1-code" /> <br> <label for="val2-code">Введите Val2:</label> <input type='number' name='val2' id="val2-code" /> <div class="my-but select-button disabled">Отправить</div> </div> </div> Получение данных: $(document).on('click', '.select-button', (function () { if ($(this).hasClass('enabled')) { var value = $('#cons-list').children('option:selected').val(); if (consignee != '') { $("#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); } }) } else { alert('empty!'); } } else { return false; } }) Пример селекта, после получения данных от пользователя. <select id="cons-list"> <option readonly=""></option> <option value="val1">Text1</option> <option value="val2">Text2</option> </select> Напомню, проблема при повторной отправке. Смотрю в сторону того, что искать значения не на $(document).ready(function(){ }) а на $(document).on('change', function(){ }) Прошу помощи. |
Syfer43, ты сам потестировать свой скрип можешь?
Посмотри, что ты там отправляешь... И отправляешь ли вообще... |
Цитата:
там и алерт на этот счет стоит, если приглядеться) |
Цитата:
Значение может быть "пусто" если селектор у тебя не правильный и не находит нужный тебе элемент... |
Цитата:
|
Цитата:
var value = $('#cons-list').val(); |
Цитата:
Цитата:
value = consignee Цитата:
и еще момент, первый раз значение берется верно. не срабатывает только повторно и третий раз и т.д. |
Цитата:
|
Цитата:
Сделал так. как вы предложили: $(document).on('click', '.select-button', (function () { if ($(this).hasClass('enabled')) { 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); } }) } else { alert('empty!'); } } else { return false; } }) результат тот же. Первый раз данные отправляются нормально, второй раз value = ''. при этом. оба раза селект идентичный: <select id="cons-list"> <option readonly=""></option> <option value="val1">val1</option> <option value="val2">val2</option> </select> |
$(document).on('click', '.select-button.enabled)', (function () { И не надо проверять if ($(this).hasClass('enabled')). В остальном либо с логикой у вас не так, либо есть ошибка. Ибо если отправляется пустое значение, то как же тогда if (value != '')? Кстати, просто if(value) ... |
Часовой пояс GMT +3, время: 22:03. |