php: множественный блок выбора в массиве с функцией поиска

У меня есть массивы select box, которые выведут несколько полей выбора в зависимости от того, сколько ящиков выбора я хочу показать. Функция, когда я выбираю опцию, заключается в том, что она ищет детали в моей базе данных с помощью ajax. Функция поиска работает, но только в первом поле выбора не для остальных моих полей выбора. это mypage.php

<select name = "room[]" id = "search">
  <option value = "none">&larr;Room</option>
  <?php
    $find_room = DB::getInstance()->query("SELECT * FROM tbl_room WHERE room_status =  'ENABLED'");
if($find_room->count()){
   foreach($find_room->results() as $find_room){

    ?>
     <option value = "<?php echo $find_room->room_id; ?>"><?php echo $find_room->room_number; ?>
     </option>
 <?php

    }
  } 
  ?>
</select>

это мой аякс

<script>    
    $(document).ready(function(){

    $("#search").change(function(){
        var search = $("#search").val();
        $.ajax({
            type:"POST",
            url:"programhead_ajaxroom.php",
            data:{search:search},
            success:function(res){
                $("#subjects").html(res);
            }

        });
    });
 });
</script>

это моя ajaxpage

if(isset($_POST['search'])){
 functions right here are select querys into table(this is working)
}

Я действительно ценю твою помощь.

1
12 дек. '14 в 20:30
источник поделиться
2 ответов

Попробуйте использовать синтаксис для делегированного события, поскольку вы динамически меняете HTML. Используйте атрибут class, чтобы определить событие change и использовать this внутри функции, поскольку у вас есть много полей выбора.

$(document).on("change",".search",function(){
    ele = $(this);
    var search = ele.val();
    $.ajax({
        type:"POST",
        url:"programhead_ajaxroom.php",
        data:{search:search},
        success:function(res){
            ele.html(res);
        }

    });
});

Также вы должны использовать атрибут class в select html, поскольку идентификаторы должны быть уникальными.

<select name = "room[]" id = "search" class="search">
0
12 дек. '14 в 20:32
источник

О, ну, я пропустил цикл через каждый массив элемента

 $(document).on("change","select[name^=search]",function(){
        check_obj = document.getElementsByName("search[]");
        for (i=0; i<check_obj.length; i++)
        {
            if (check_obj[i].value == "none")
            {}
            else{
                var search= check_obj[i].value;
            }
        }
        $.ajax({
            type:"POST",
            url:"programhead_ajaxroom.php",
            data:{search:search},
            success:function(res){
                $("#subjects").html(res);
            }

            });

    });
0
13 дек. '14 в 18:53
источник

Посмотрите другие вопросы по меткам или Задайте вопрос