Автовыбор опций выбора с помощью javascript / jquery

0

Я работаю над функцией в Javascript/jQuery. Функция будет искать имена пользователей в элементе "select" "Y" и выбирает их, когда вы скопировали кучу имен пользователей в текстовой области "X" с помощью " , ", " , ", " ; 'или' 'как разделитель, а также если вы сделаете это наоборот:

JavaScript/JQuery:

$(document).ready(function() {
    $("dd#id-element select#id").attr({"multiple": "multiple", "size": 25, "name": "id[]"});
});
$(function() {
    $("select#id").change(function() {
                    var selected_id = $(this).val(),
                            selected_name = new Array();
                    $(this).find("option:selected").each(function() {
                        selected_name.push($(this).text());

                    });

                    $("textarea#id_field").val(selected_id);
                    $("textarea#name_field").val(selected_name);
                    console.log(selected_id, selected_name);
                });
                $("textarea#name_field").keyup(function() {
        $("select#id option").removeAttr("selected");
        var names_raw = $(this).val(),
            names = names_raw.replace(/(, | |,)/gi, ";"),
            selected_name = names.split(";"),
            selected_id = new Array();
        $.each(selected_name, function(i, value) {
            if (value != "" && value != null) {
                $("select#id option[label='" + value + "']").attr("selected", true);
                selected_id.push($("select#id option[label='" + value + "']").val());
            }
        });
    });
});

Код HTML:

<select name="id" id="id">
                        <option value="1092" label="00lara00">00lara00</option>
                        <option value="5105" label="010201e">010201e</option>
                        <option value="1725" label="0411dennis">0411dennis</option>
                        <option value="1795" label="051259">051259</option>
                        <option value="2281" label="0815Timmey">0815Timmey</option>
                        <option value="3337" label="0vlinder0">0vlinder0</option>
                        <option value="127" label="1001gece">1001gece</option>
                        <option value="3693" label="111nizza">111nizza</option>
                        <option value="821" label="114helen">114helen</option>
                        <option value="2887" label="1212whopper">1212whopper</option>
                        <option value="5564" label="123boo">123boo</option>
</select>
<textarea name="name_field" id="name_field"></textarea>

когда я выбираю некоторые имена пользователей в элементе select, он отлично работает, имена пользователей копируются в текстовое поле. когда я вставляю некоторые имена пользователей в текстовое поле, все отменяется так, как должно, но ничего нового не выбрано

  • 0
    Я изменил <select name = "id" id = "id"> на <select multip = "true" name = "id" id = "id"> и похоже, что это работает для меня ... это помогает?
  • 0
    извините забыл пример кода. эта форма загружается из Zend Framework, поэтому я добавил этот $(document).ready(function() { $("dd#id-element select#id").attr({"multiple": "multiple", "size": 25, "name": "id[]"}); }); к элементу <script>, но все равно ничего хорошего
Показать ещё 1 комментарий
Теги:
select
forms

1 ответ

0
Лучший ответ

Я, наконец, начал работать. Вот как я это сделал

Javascript:

$(document).ready(function() {
    $("dd#id-element select#id").attr({"size": 25});
});
$(function() {
    $("select#id").change(function() {
        var selected_id = $(this).val(),
                selected_name = new Array();
        $(this).find("option:selected").each(function() {
            selected_name.push($(this).text());
            $(this).addClass("checked");
        });
        $("textarea#name_field").val(selected_name);
        $("textarea#name_field").keyup();
    });
    $("textarea#name_field").keyup(function() {
        $("select#id option.checked").attr("checked", null).attr("selected", null).removeClass("checked");
        var names_raw = filterValue($(this).val()),
                names = names_raw.replace(/(, | |,|\s)/gi, ";"),
                selected_name = names.split(";"),
                selected_id = new Array();
        $(this).val(names_raw)
        $.each(selected_name, function(i, value) {
            if (value != "" && value != null) {
                if ($("select#id option[label='" + value + "']").length > 0) {
                    $("select#id option[label='" + value + "']").attr('checked', 'checked').attr('selected', 'selected').addClass("checked").focus();
                    selected_id.push($("select#id option[label='" + value + "']").val());
                }
            }
        });
        $("select#id").val(selected_id);
    });
});

html-код:

<select name="id[]" id="id" multiple="multiple">
                                <option value="1092" label="00lara00">00lara00</option>
                                <option value="5105" label="010201e">010201e</option>
                                <option value="1725" label="0411dennis">0411dennis</option>
                                <option value="1795" label="051259">051259</option>
                                <option value="2281" label="0815Timmey">0815Timmey</option>
                                <option value="3337" label="0vlinder0">0vlinder0</option>
                                <option value="127" label="1001gece">1001gece</option>
                                <option value="3693" label="111nizza">111nizza</option>
                                <option value="821" label="114helen">114helen</option>
                                <option value="2887" label="1212whopper">1212whopper</option>
                                <option value="5564" label="123boo">123boo</option>
 </select>
 <textarea name="name_field" id="name_field"></textarea>

Ещё вопросы

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