Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите решить проблему! (https://javascript.ru/forum/dom-window/69995-pomogite-reshit-problemu.html)

rdPavel 02.08.2017 11:49

Помогите решить проблему!
 
Доброго дня спецы!
Два дня не могу решить проблему.

На странице, с помощью скрытого инпута ->

<input type="hidden" name="ID" value="<?php echo esc_attr( $listing->ID ); ?>" />

Создаются поля, выпадающие списки, произвольные поля и так далее

Одно из них ->
<select name="cp_state" id="cp_state" class="dropdownlist required">

Как мне программно присвоить этому <select name="cp_state" id="cp_state" обработчик onchange="CityList(this)

Пробовал присвоить в файле 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"

Нужно всего лишь сделать вот так:
<select name="cp_state" id="cp_state"class="dropdownlist required" onchange="CityList(this)"> и всё.

А вот этот <select name="cp_state" id="cp_state" class="dropdownlist required"> штатный, создается самим движком.

Как еще можно сделать?
Подскажите!

rdPavel 02.08.2017 11:55

Я уже думал создать еще один <select name="cp_state2" id="cp_state2" class="dropdownlist required" с обработчиком onchange="CityList(this)"> СКРЫТЫЙ

и копировать или вставлять данные с cp_state в cp_state2
Но этот вариант как то не очень, так как в дальнейшем будет много зависимых селектов.

Nexus 02.08.2017 12:08

rdPavel, открой файл, который создает тебе эти формы и посмотри можно ли там свои атрибуты элементам присваивать или нет.
Во втором случае допили сценарий, либо нужный select руками на странице пропиши.

rdPavel 02.08.2017 12:17

Nexus,

Файл form-listing-details.php

<form name="mainform" id="mainform" class="form_step" action="<?php echo appthemes_get_step_url(); ?>" method="post" enctype="multipart/form-data">
<?php wp_nonce_field( $action ); ?>

<ol>
<span class="form-fields">
<li>
<div class="labelwrapper"><label><?php _e( 'Category', APP_TD ); ?></label></div>
<div class="ad-static-field"><strong><?php echo $category->name; ?></strong>&nbsp;&nbsp;<small><a href="<?php echo $select_category_url; ?>"><?php _e( '(change)', APP_TD ); ?></a></small></div>
</li>
<?php cp_show_form( $category->term_id, $listing ); ?>
</span>
<center><p class="btn1">
<input type="submit" name="step1" id="step1" class="btn_orange" value="<?php _e( 'Continue &rsaquo;&rsaquo;', APP_TD ); ?>" / >
</p></center>
</ol>

<input type="hidden" name="action" value="<?php echo esc_attr( $action ); ?>" />
<input type="hidden" name="ID" value="<?php echo esc_attr( $listing->ID ); ?>" />

Как раз последний <?php echo esc_attr( $listing->ID и формирует все эти поля, куда только я не совал onchange="CityList(this)" - срабатывает только у cp_state.
Если я его просто в открытом коде в браузере вставлю, всё чотко работает. До перезагрузки страницы.

rdPavel 02.08.2017 12:25

Цитата:

Сообщение от Nexus (Сообщение 460368)
rdPavel, открой файл, который создает тебе эти формы и посмотри можно ли там свои атрибуты элементам присваивать или нет.
Во втором случае допили сценарий, либо нужный select руками на странице пропиши.

В том то и дело, что можно свой селект создать и не парится.
Но задача использовать штатный cp_state так как он по всей системе, и в отборах, и фильтрах и в поиске и так далее

Nexus 02.08.2017 12:39

rdPavel, я бы так не стал делать, но это же wordpress))
ob_start();
cp_show_form( $category->term_id, $listing );
$select=ob_get_contents();
ob_end_clean();
$select=str_replace('<select ','<select onchange="CityList(this);" ',$select);

echo $select;

rdPavel 02.08.2017 12:43

Nexus,
https://drive.google.com/open?id=0Bz...XVOT2hJS2VpQms

Nexus 02.08.2017 12:47

rdPavel, а куда мой код был помещен?
PS. По-моему проще подключить к странице скрипт (судя по тому, что в атрибут вставляется наименование пользовательской функции, он уже подключен), в котором обратиться к селекту и повесить на него обработчик.

Nexus 02.08.2017 12:49

rdPavel,
<form name="mainform" id="mainform" class="form_step" action="<?php echo appthemes_get_step_url(); ?>" method="post" enctype="multipart/form-data">
<?php wp_nonce_field( $action ); ?>

<ol>
<span class="form-fields">
<li>
<div class="labelwrapper"><label><?php _e( 'Category', APP_TD ); ?></label></div>
<div class="ad-static-field"><strong><?php echo $category->name; ?></strong>&nbsp;&nbsp;<small><a href="<?php echo $select_category_url; ?>"><?php _e( '(change)', APP_TD ); ?></a></small></div>
</li>
<?php 
    ob_start();
    cp_show_form( $category->term_id, $listing );
    $select=ob_get_contents();
    ob_end_clean();
    $select=str_replace('<select ','<select onchange="CityList(this);" ',$select);

    echo $select;
?>
</span>
<center><p class="btn1">
<input type="submit" name="step1" id="step1" class="btn_orange" value="<?php _e( 'Continue &rsaquo;&rsaquo;', APP_TD ); ?>" / >
</p></center>
</ol>

<input type="hidden" name="action" value="<?php echo esc_attr( $action ); ?>" />
<input type="hidden" name="ID" value="<?php echo esc_attr( $listing->ID ); ?>" />

rdPavel 02.08.2017 12:52

Nexus,
в <form name="mainform"


Часовой пояс GMT +3, время: 02:04.