Привет.
Вопрос мой связан с запросами ajax в форме.
У меня есть checkbox который при активном статусе активирует поле которая была disabled.
Моя проблема в том что на это поле работает другой ajax запрос, который работает как надо. Но, когда первый запрос активирует поле добавляет в ID поля символы и меняет ID и другой ajax запрос перестаёт работать.
Пример:
Поле до id="edit-result-field-0-value"
Поле после id ="edit-field-result-0-value--Otl6DXAuLos"
Подскажите пожалуйста как с этим бороться?
Я пробовал и чистый ajax и form API ajax.
Спасибо за помощь.
Комментарии
Покажите код, что возвращает AJAX-callback
По этой ссылке
https://www.drupal.org/forum/support/module-development-and-code-questio...
Есть вся информация.
У меня не получалось и спросил, потом дошёл что вся проблема в том что меняется ID поля.
Поэтому второй ajax не сработает.
Спасибо большое.
Возможно я чего-то не понимаю, но при чем здесь Ajax? Простой javascript, который работает чисто на клиенте и не требует никаких запросов к серверу. Чего я не понимаю?
Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require.
И как я понял форма уже создана и для того чтобы менять статусы полей после первого запуска надо использовать ajax.
И самое трудное если поле емеет статус access=false и disabled при первом запуске, трудно через ajax запрос задать ей статусы access=true и enabled.
Может быть я плохо объяснил но неделю ищу ответ как через ajax работать с статусами поля: "unset, disable, access=false", из drupal формы. Я сумел сделать функционал при помощи prefix и sufix, и возвращать только этот wraper, но проблема как я выше сказал drupal при срабатывания ajax запроса меняет ID поля, добавляя новые символы в конце ID этого поля.
Спасибо большое за помощь.
Я нашёл функцию которую отвечает за это
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Util...
Я был прав, при вызове Ajax request генерируется новый ID поля.
Сейчас вопрос как работать с этим?
Спасибо.
То. что айдишники меняются, это нормально. Так и должно быть. Другие аяксы отваливаются по какой-то другой причине.
Просто используйте Form API #states, можно без AJAX'а.
Я понял мою ошибку.
Спасибо всем за помощь и извините за то что потратил ваше время.
Я просто мешал оба вида ajax в drupal: Traditional AJAX, and the Drupal Form API #ajax api.
И здесь есть очень хорошее объяснения про разницу между ними:
https://drupal.stackexchange.com/questions/281584/ajax-callback-inside-h...
Всё заработало.
Ещё раз спасибо.