Как удалить дубликаты в раскрывающемся списке с помощью jquery

0

Я пытаюсь удалить дубликат в раскрывающемся списке, используя jquery. Поиск подходящего вопроса и ответа, но все еще неспособный его решить. Надеюсь, вы, ребята, можете мне помочь. Благодарю! Вот мой код:

     $(document).ready(function() {
            $("#cat").change(function() {
                $.ajax({
                    type: "GET",
                    url: "getPositionTitle.php",
                    data: "s_department=" + $(this).find(":selected").val(),
                    cache: false,
                    success: function(msg){
                        $("#position_title").empty();
                        my_position_title_array = $.parseJSON(msg);
                        for (i = 0; i < my_position_title_array.length; i ++) {
                            $("#position_title").append('<option value="' + my_position_title_array[i].position_title + '">' 
                                + my_position_title_array[i].position_title + '</option>');
                        }
                        $("#position_title").trigger('change');
                    }
                });
                var usedNames = {};
                $("select[name='my_position_title_array'] > option").each(function () {
                    if(usedNames[this.text]) {
                        $(this).remove();
                    } else {
                        usedNames[this.text] = this.value;
                    }
                });
            });
            $("#cat").trigger('change');

        }); 



        // Post data to postPositionData.php when user changes form
        $("#position_title").change(function() {
            // Serialize form data
            var yourFormData = $(this).serialize();
            // POST
            $.ajax({
                type: "POST",
                url: "doOfferedJob.php",
                data: yourFormData
            });
        });

    </script>

    <tr>
                    <td><label for="applied_department">Department:</label></td>
                    <td>
                        <select id="cat" applied_position_title="category" name="applied_department">
                            <?php
                            $query = "SELECT id, department FROM department";
                            $result = mysqli_query($link, $query) or die(mysqli_error());
                            while ($row = mysqli_fetch_assoc($result)) {
                                echo "<option value ='" . $row['department'] . "'>" . $row['department'] . "</option>";
                            }
                            ?>
                        </select>

                    </td>
                </tr>
                <tr>
                    <td><label for = "position_title">Position Title:</label></td>
                    <td>
                        <select id="position_title" name="position_title">
                            <option value="1"></option>
                        </select>
                    </td>
                </tr>
  • 0
    Добавьте сюда немного html
  • 0
    Создание JSFiddle поможет нам
Показать ещё 4 комментария
Теги:
duplicates
html-select

1 ответ

0

Хотя я согласен с комментарием A. Wolff, что это должно управляться на стороне сервера, вы все равно можете настроить свой цикл for следующим образом:

var positionTitles = [];
for (i = 0; i < my_position_title_array.length; i ++) {
    if( positionTitles.indexOf( my_position_title_array[i].position_title) === -1 ) {
        $("#position_title").append(/* ... */);
    } else {
        positionTitles.push( my_position_title_array[i].position_title );
    }
}

То есть, только если... position_title - настоящая строка, а не какой-то строковый-ish-объект.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню