Доброго дня спецы! Два дня не могу решить проблему. На странице, с помощью скрытого инпута -> PHP: <input type="hidden" name="ID" value="<?php echo esc_attr( $listing->ID ); ?>" /> Создаются поля, выпадающие списки, произвольные поля и так далее Одно из них -> PHP: <select name="cp_state" id="cp_state" class="dropdownlist required"> Как мне программно присвоить этому полю обработчик onchange="CityList(this) Или может быть через name="cp_state" id="cp_state" ? Пробовал присвоить здесь в файле custom-forms.php $field_class = ( $result->field_req ) ? 'dropdownlist required' : 'dropdownlist'; $args = array( 'name' => $result->field_name, 'id' => $result->field_name, 'class' => $field_class, 'onchange' => 'CityList(this)' ); Но тогда этот обработчик во всех dropdownlist, а мне нужен только name="cp_state" id="cp_state" Как еще можно сделать?
прописать в подключаемом js что-то типа Код (Javascript): $("#cp_name").on("change", function () { CityList$($(this).val); })
@ADSoft Что-то не получается. Вообще есть ли такая функция к полю name="cp_state" или по id="cp_state" привязать или присвоить onchange?
ну смотреть надо ошибки, опечатки... поправить - главное направление дано Код (Javascript): $("#cp_name").on("change", function () { CityList($(this).val()); }) пишу с коленки на телефоне... вот и неудобно
Обработчик который нужно привязать к PHP: <select name="cp_state" id="cp_state"class="dropdownlist required" onchange="CityList(this)"> chained.js PHP: var ajax = new Array(); function CityList(sel) { var countryCode = sel.options[sel.selectedIndex].value; document.getElementById('cp_region').options.length = 0; // Empty city select box if(countryCode.length>0){ var index = ajax.length; ajax[index] = new sack(); ajax[index].requestFile = 'http:/*******getcities.php?countryCode='+countryCode; // Specifying which file to get ajax[index].onCompletion = function(){ createCities(index) }; // Specify function that will be executed after file has been found ajax[index].runAJAX(); // Execute AJAX function } } function createCities(index) { var obj = document.getElementById('cp_region'); eval(ajax[index].response); // Executing the response from Ajax as Javascript code } в getcities.php база районов и сел cp_region - вывод сел исходя из района.
ну зачем 3 раз повторять одно и тоже...? что тебе надо - ясно .... способ я предложил, он юзает библиотеку JQuery, которую ты не подключаешь судя по тому какой код у тебя в запросах советовал бы кратенько изучить и применить - кода в разы меньше будет, понятность - увеличится
@rdPavel оформление кода https://php.ru/forum/threads/tipichnyj-dialog-s-novichkom.59596/#post-527225
@denis01 Добрый день! Можете подсказать из-за чего могут конфликтовать эти два кода. Один отключу второй работает и на оборот. Эти оба на одной форме. Обработчик cp_state.js 01 var ajax = new Array(); 02 03 window.onload=function(){ 04 window.document.getElementById('cp_state').onchange=function(e){ 05 getCityList(e.target); 06 }; 07 }; 08 if(window.document.readyState=='complete') 09 window.dispatchEvent(new Event('load')); 10 11 12 function getCityList(sel) 13 { 14 var countryCode = sel.options[sel.selectedIndex].value; 15 document.getElementById('cp_region').options.length = 0; 16 if(countryCode.length>0){ 17 var index = ajax.length; 18 ajax[index] = new sack(); 19 20 ajax[index].requestFile = 'http://***/sel/baza/cp_state.php?countryCode='+countryCode; 21 ajax[index].onCompletion = function(){ createCities(index) }; 22 ajax[index].runAJAX(); 23 } 24 } 25 26 function createCities(index) 27 { 28 var obj = document.getElementById('cp_region'); 29 eval(ajax[index].response); 30 } Обработчик cp_avto.js 01 var ajax = new Array(); 02 03 window.onload=function(){ 04 window.document.getElementById('cp_id_387').onchange=function(e){ 05 getAvtoList(e.target); 06 }; 07 }; 08 if(window.document.readyState=='complete') 09 window.dispatchEvent(new Event('load')); 10 11 12 function getAvtoList(sel) 13 { 14 var countryCode2 = sel.options[sel.selectedIndex].value; 15 document.getElementById('cp_id_928').options.length = 0; 16 if(countryCode2.length>0){ 17 var index = ajax.length; 18 ajax[index] = new sack(); 19 20 ajax[index].requestFile = 'http://***/sel/baza/cp_avto.php?countryCode2='+countryCode2; 21 ajax[index].onCompletion = function(){ createCities2(index) }; 22 ajax[index].runAJAX(); 23 } 24 } 25 26 function createCities2(index) 27 { 28 var obj = document.getElementById('cp_id_928'); 29 eval(ajax[index].response); 30 } База, у каждого своя, может её в общую согнать?
@rdPavel сложно сказать, может кто-то сходу подскажет, если нет, то почитай что такое отладка кода, ты так сможешь сам найти проблему. Лучше оформляй код, чтобы его как минимум легко было читать и копировать для запуска. Твой скопировать очень сложно. Ещё можешь дать ссылку на страницу где этот код не работает, там будет проще посмотреть в консоль браузера и почитать ошибки если они есть. Программа сама пытается подсказать в чём проблема. Прочитай про отладку и инструменты разработчика в google chrome это поможет
@denis01 Добрый день! Подскажите пожалуйста... function CopySelect() { var value = document.getElementById('cp_id_387').value; var elements = document.getElementsByName('post_title'); for(var i in elements) elements.value = value; } Код копирует данные Select "cp_id_387" в Input "post_title" Дело в том что есть еще один Select "cp_id_928" как можно реализовать последовательно копирования Т.е. в Input "post_title" копируется "cp_id_387" через пробел "cp_id_928" По сути картинка такая: Марка авто: Тойота Модель авто: Найс Input "post_title" = Тойота Найс Вообще возможно ли это реализовать?
id у тегов должен быть уникальный, если нет, то выпутывайся сам, или просто можешь задавать нескольким тегам одинаковый class чтобы находить все такие класс и перебирать в массиве оформление кода https://php.ru/forum/threads/tipichnyj-dialog-s-novichkom.59596/#post-527225