2014-09-12 4 views
0

Я создал зависимое падение штата и города. Это форма представления собственности. Когда пользователь редактирует форму, я хочу отобразить выбранное состояние и город. Мне удалось каким-то образом отобразить выбранное состояние. Я написал функцию get_city function.php и назову ее через ajax.I есть две разные таблицы, то есть состояние и город. Так что проблема в том, что я не понимаю, как показать выбранный город? Это мой код для выпадающегоКак отобразить выбранное значение выпадающего списка при редактировании пользователем любой формы?

<select name="state" id="state" class="select-submit2"> 
    <option value="">Select state</option> 

    <?php 
    $property_id = $_GET['listing_edit']; 
    $property_state = get_post_meta($property_id, state, true); 
    $result=$wpdb->get_results("select * from states"); 
    //$wpdb->get_results($query); 
    foreach($result as $row) { 
     $state_id=$row->state_id; 
     $state_name=$row->state_name;  
?> 
<option value="<?php echo $state_id; ?>" <?php if($property_state == $state_id){ echo 
'selected="selected"';} ?>><?php echo $state_name; ?></option> 
<?php 
     //echo '<option value='.$state_id.'>'.$state_name.'</option>'; 
    } 
?>   
</select> 
<input type="hidden" name="edit_id" id="edit_id" value="<?php echo $edit_id;?>"> 
<select name="district" id="district" required class="select-submit2"> 
    <option value="">Select District</option> 
</select> 

В приведенном выше коде я отображаются выбранное состояние. Я искал в google и обнаружил, что мне нужно передать post id в функцию function.php. Это мой код для функции get_city в function.php файле

function getcity() { 

global $wpdb; 

    if($_POST['state']) { 
     $id = $_POST['state']; 
     global $edit_id; 
     $property_id = $edit_id; 
     $district = get_post_meta($property_id, 'district', true); 
     $result=$wpdb->get_results("SELECT * FROM districts WHERE state_id='$id'"); 

     foreach($result as $row) { 
     $city_name = $row->district_name; 
     $city_id = $row->district_id; 
?> 
<option value="<?php echo $city_id; ?>" <?php if($district == $city_id){ echo 'selected="selected"';} ?>><?php echo $city_name; ?></option> 
<?php  
     //echo '<option value="'.$city_id.'">'.$city_name.'</option>';     
     } 
    } 
} 
add_action("wp_ajax_nopriv_getcity", "getcity"); 
add_action("wp_ajax_getcity", "getcity"); 

Это мой JS код ...

jQuery(document).ready(function($) { 

    $('#state').on('change', function() { 

    var state = $('#state').val(); 
    var edit_id = $('#edit_id').val(); 

    $.ajax 
    ({ 
    type : "POST", 
    url : "http://whitecode.in/demo/plotsup_plot/wp-admin/admin-ajax.php", 
    data :{'action' : 'getcity', 'state' : state , 'edit_id' : edit_id }, 
    success: function(html) { 

     $("#district").removeAttr("disabled"); 
     $("#district").html(html); 
    } 

    }); 
    }); 

<input type="hidden" name="edit_id" id="edit_id" value="<?php echo $edit_id;?>"> 
+0

, если возможно, вы могли бы также разместить яваскрипту часть – suvajit

+0

@suvajit Смотрите мое редактирование выше .. –

+0

вар edit_id = $ ('# edit_id') Вал(). Что такое «#edit_id», в котором этот элемент имеет этот идентификатор и какое значение он хранит? – suvajit

ответ

0

Вы должны поставить выше код в функции. Пусть имя функции будет myFunction(). Если вы хотите передать идентификатор сообщения функции, вызовите функцию с сообщением id в качестве аргумента, то есть myFunction($postid), где $postid - это идентификатор сообщения. Пожалуйста, не забудьте вызвать функцию из цикла post, чтобы функция вызывала для каждого столбца.

+0

Это моя форма. Значит, это html-код. Так я могу положить это в функцию. –

+0

Конечно. Вы можете поместить форму внутри функции как pass post id в качестве аргумента. –

0

Я лично загружаю a для каждого состояния со стилем = "display: none;", после чего пользователь выбирает состояние соответствующих изменений style = "display: none;" to style = "display: inline;"

0

Попробуйте это и дайте мне знать, если он работает или нет. Изменение производится на двух строках global $ edit_id; был удален, а строка $ property_id была изменена. Пожалуйста, примените изменения правильно и сообщите мне, если они в порядке.

<?php 
function getcity() { 

global $wpdb; 

if($_POST['state']) { 
    $id = $_POST['state']; 
    $property_id = $_POST['edit_id']; 
    $district = get_post_meta($property_id, 'district', true); 
    $result=$wpdb->get_results("SELECT * FROM districts WHERE state_id='$id'"); 

    foreach($result as $row) { 
    $city_name = $row->district_name; 
    $city_id = $row->district_id; 
?> 
<option value="<?php echo $city_id; ?>" <?php if($district == $city_id){ echo 'selected="selected"';} ?>><?php echo $city_name; ?></option> 
<?php  
    //echo '<option value="'.$city_id.'">'.$city_name.'</option>';     
    } 
} 
} 
add_action("wp_ajax_nopriv_getcity", "getcity"); 
add_action("wp_ajax_getcity", "getcity"); 
+0

не работает..I предупреждал edit_id в js, но он дает мне пустое предупреждение –

+0

вы можете разместить скрытый код поля, в который вы помещаете edit_id в html – suvajit

+0

см. Мое редактирование выше ... когда я повторяю это edit_id, он дает мне правильный идентификатор сообщения. –