powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery, AJAX - проблема с доступом к DOM элементам
9 сообщений из 9, страница 1 из 1
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290314
Тупой!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Начну с того, что довольно длительное время занимаюсь программированием server-side, а вот как то обработки на стороне клиента для меня сводились к каким-то банальным задачам-проверкам. Сейчас задача чуть посложнее (для человека, далекого от jQuery), зашел в тупик...
По идее это интерфейс управления базой данных. В упрощенном виде имеем следующее:
Данные из БД выводятся построчно, каждая строка - это форма с уникальным ID (равному ID записи в MySQL).
В каждой строке есть ячейка с INPUTом, рядом ссылка "сохранить" (вызывающая функцию-обработчик):
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<td align="center">
   <form id="27800">
      <input name="operation" value="income" type="hidden">
          <span id="price">
              <input size="3" type="text" name="rub"> <a href="#a"><img src="./img/save.png" onclick="javascript:saveMoney()" border="0"></a>
          </span>
   </form>
</td>



По идее, всё, что мне надо - это после ввода цены и нажатия сохранить, обработать данные AJAX, сохранить изменения в БД и заменить без обновления данные в ячейке (содержимое span id="price").
Казалось бы банально, но упёрся не могу решить! С одной формой проблем, естественно, никаких! А вот как в моем случае быть, когда форма в каждой строке своя? Мне надо добраться FORM с нужным ID -> span -> price (пробовал кучу вариантов из примеров - не получается)

Обработчик такой (неправильный мой):

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	
<script language="JavaScript">
function saveMoney()
{
       $.ajax({
                type: "POST",
                url: "./price_func.php",
                data: $(this).serialize(),
                success: function(html) {
                        $('#price').empty();
                        $('#price').append(html);
                }
        });

}
</script>



Знатоки jQuery, выручайте! Как правильно сделать? Может span id уникальным если сделать, то как то просто можно решить (так же взяв за основу ID записи из таблицы БД)?
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290320
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тупой!, давайте начнем с того, что элементы необходимо закрывать соответствующим образом:
Код: html
1.
<input name="operation" value="income" type="hidden" />



А также используйте только один элемент form на странице.
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290321
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Затем заверните повторяющийся набор контролов Input и Save button в div, пронумеруйте его Id и соответсвенно передавайте в Javascript для дальнейшей обработки.
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290327
Тупой!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronТупой!, давайте начнем с того, что элементы необходимо закрывать соответствующим образом:
Код: html
1.
<input name="operation" value="income" type="hidden" />



А также используйте только один элемент form на странице.


Спешил, волновался... И порядок то кривой, обычно type, name, value :)
Кстати, незакрытый элемент это сильно плохо для jQuery? Просто на функционале никогда не сказывалось... Раньше и не было такого явления, как например <br />
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290330
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тупой!Кстати, незакрытый элемент это сильно плохо для jQuery?
Это может негативно повлиять на кросс-браузерную совместимость, непредсказуемый рендеринг одних и тех же страниц в разных браузерах, ну и проблемы с применением CSS. Потом придется долго искать где косяк, а косяк будет в незакрытом элементе. Оно Вам надо?
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290332
OldBoyOdeSu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тупой!,

синтаксический анализатор HTML, каждого браузера, имеет свои внутренние правила при разборе, например вложенный элемент form в другой form будет игнорироваться, <br/> тоже обрабатывается и достраивается до валидного. Т.е. браузер не выдаст страницу с надписью "не валидный синтакис" если вы забудете закрыть пару тегов
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290463
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тупой!...
В упрощенном виде имеем следующее:
Данные из БД выводятся построчно, каждая строка - это форма с уникальным ID (равному ID записи в MySQL).
В каждой строке есть ячейка с INPUTом, рядом ссылка "сохранить" (вызывающая функцию-обработчик):
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<td align="center">
   <form id="27800">
      <input name="operation" value="income" type="hidden">
          <span id="price">
              <input size="3" type="text" name="rub"> <a href="#a"><img src="./img/save.png" onclick="javascript:saveMoney()" border="0"></a>
          </span>
   </form>
</td>



По идее, всё, что мне надо - это после ввода цены и нажатия сохранить, обработать данные AJAX, сохранить изменения в БД и заменить без обновления данные в ячейке (содержимое span id="price").
Казалось бы банально, но упёрся не могу решить! С одной формой проблем, естественно, никаких! А вот как в моем случае быть, когда форма в каждой строке своя? Мне надо добраться FORM с нужным ID -> span -> price (пробовал кучу вариантов из примеров - не получается)
...
Первое - режет глаз onclick="javascript:saveMoney()" - просто onclick="saveMoney()"
Второе - если используем jQuery и XHR, то в таком ключе формы вообще нафиг нужны: onclick="saveMoney(27800).
Возникает вопрос - если форм, как вы пишете много, то что такое <span id="price">, он в других формах как-то иначе назван? И зачем эта обертка вообще нужна?
Третье - опять-же если jQ, то якорь тоже не нужен.

Разметку которую вы привели можно обработать, но лучше ее изменить:

Код: html
1.
2.
3.
4.
5.
6.
7.
<td align="center">
      <input name="operation" value="income" type="hidden">
      <div>
         <input size="3" type="text" name="rub" id="27800" />
         <span class="save" onclick="saveMoney(27800)">save</span>
      </div>
</td>



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function saveMoney(id)
{
    $.post('./price_func.php',
    { value: $('#' + id).val() },// data send to server
    function (data)
    {
        $('#price').empty().append(data);
        console.log('common success');
    })
    .done(function ()
    {
        console.log('second success');
    })
    .fail(function ()
    {
        console.log('error');
    })
    .always(function ()
    {
        console.log('always');
    });
}



Примечание: в классе "save" элемента span определяем всё что нужно - картинку бэкграундом, стиль надписи и т.п.
методы done(), fail(), always() можно не использовать, это для сведения и расширения функционала.
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39290478
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавка: элемент <input name="operation" value="income" type="hidden"> тоже уже не нужен, необходимые данные пропихиваем через функцию или "зашиваем" в текстовый input через data- атрибуты.
...
Рейтинг: 0 / 0
jQuery, AJAX - проблема с доступом к DOM элементам
    #39300485
Тупой!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Молчал - отдыхать уезжал.

Фёдор К, огромное Вам спасибо!!!!
Вы помогли мне гораздо больше, чем просто решить данную конкретную задачу...
Суть понял! :) Всё просто же на самом деле... :)
Мои знания 2000х годов безнадежно устарели! :) Задачу реализовал без единой формы...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery, AJAX - проблема с доступом к DOM элементам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]