Как вызвать onSelect Datalist в Chrome - PullRequest
0 голосов
/ 03 ноября 2019

Я разработал свой проект на Mozilla Firefox. Я не рассматривал другие браузеры. Эта функция onSelect не работает в Chrome.

У меня есть список клиентов, и я хочу получить соответствующие имена в соответствии с входными данными. Когда пользователь щелкает по указанному клиенту, моя функция заполняет другие входные данные. Это очень хорошо работает в Firefox.

<div class="form-group col-md-6">

   <label>Vorname</label>
    <input class="form-control" id="vorname" placeholder="Vorname" onSelect='selectClient(this)' list="kunden">
    <datalist id="kunden">
    <?php 
           foreach($clients as $client)
           {    
                 echo("<option id='{$client["id"]}' value='{$client["id"]}'> $client["vorname"]} {$client["nachname"]} -- {$client["address_ort"]}</option>");                                         }
     ?>                                 

    </datalist>
</div>

function selectClient(item){

    if(!isNaN(item.value)){
    isOldClient=true;
    oldClientId=item.value;
    <?php
    echo "var clients_array = ". $js_array . ";\n";
    ?>
    var client=clients_array[item.value-1];
    $("#nachname").val(client["nachname"]);
    $("#geburtsdatum").val(client["geburtsdatum"]);
    $("#vorname").val(client["vorname"]);
    $("#telefon").val(client["telefonnummer"]);
    $("#strasse").val(client["address_str"]);
    $("#hausno").val(client["address_no"]);
    $("#plz").val(client["address_plz"]);
    $("#ort").val(client["address_ort"]);
    }
    else{
        isOldClient=false;
    }
};

Это Mozilla Firefox (не удалось перехватить список опций): https://youtu.be/rnOUudSlBv4

Это хром: https://youtu.be/jE6DM-Gwc4I Надеждакто-то найдет решение. Заранее спасибо за ваши ответы.

1 Ответ

1 голос
/ 03 ноября 2019

Вы можете попробовать этот способ, это, вероятно, будет работать во всех браузерах

 $('#vorname').on('input', function () {
     console.log('Input has been changed');
     selectClient($(this).val()); // call your function
 });

попробуйте это, если он выбран из списка данных или типа, вы можете добавить, если не пустое / нулевое условие

$("#vorname").on('change', function () {
    var val = this.value;
    if($('#kunden').filter(function(){
        return this;        
    }).length) {
        // if selected
        alert('selected= '+this.value);
    }else {
        // if typed
        alert('new= '+this.value)
    }
});

если вы используете это, то удалите onSelect, потому что он сработает дважды, затем для firefox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...