Мой код для отображения предложений отлично работает с Firefox, но не для Chrome и IE - PullRequest
0 голосов
/ 14 июня 2019

Предполагается, что функция загружает предложения в зависимости от того, что пользователь введет в текстовое поле.

События onkeyup и onblur должны иметь оценку текстового поля, тогда результат будет передан в изначально скрытый элемент div, который до подачи данных будет показан первым.

Изначально эти события были включены в тег, который отлично работает для Firefox.

В качестве альтернативы я попытался удалить событие из тега и использовал селектор jQuery $ (), чтобы связать событие с функцией, которая делает его не работающим ни в одном браузере сразу после этого.

Это код, который работает для Firefox, но не в IE и Chrome.

<td align="center">
    <input type='text' size='25' id='dr' name='dr' style="width: 45px" onkeyup='drKeyUpFunction(this.value);' onblur='drBlurFunction();'>
    <div id='drSuggestions' class='suggestionsBox' style='display: none'>
        <div id='drSuggestionsList' class='suggestionList'></div>
    </div>
</td>

<td align="center">
    <input type='text' size='25' id='outExpense' name='outExpense' style='width: 85px' onkeyup='expKeyUpFunction(this.value);' onblur='expBlurFunction();'>
    <div id='expSuggestions' class='suggestionsBox' style='display: none'>
        <div id='expSuggestionsList' class='suggestionList'></div>
    </div>
</td>
function drKeyUpFunction(dr_num=''){
    if (dr_num.length == 0){ $('#drSuggestions').hide();
    } else {
        $.post("post_dr.php", {string: "" + dr_num + ""}, function(data){
            if (data.length > 0) {
                $('#drSuggestions').show();
                $('#drSuggestionsList').html(data);
            }
        });
    }
}

function drBlurFunction(thisValue='', thatValue='', anotherValue=''){
    $('#dr').val(thisValue);
    $('#drcust').html(thatValue);
    $('#drbal').html(anotherValue);
    setTimeout("$('#drSuggestions').hide();", 200);
}

function expKeyUpFunction(expense=''){
    if (expense.length == 0){ $('#expSuggestions').hide();
    } else {
        $.post("post_expense.php", {string: "" + expense + ""}, function(data){
            if (data.length > 0) {
                $('#expSuggestions').show();
                $('#expSuggestionsList').html(data);
            }
        });
    }
}

function expBlurFunction(thisValue=''){
    $('#outExpense').val(thisValue);
    setTimeout("$('#expSuggestions').hide();", 200);
}

В качестве альтернативы я удалил события из входного тега и поместил эти селекторы jQuery в файл js, содержащий функции, но они больше не работают после того, как я их поместил.

$('#dr').keyUp(drKeyUpFunction(this.value)).blur(drBlurFunction());
$('#outExpense').keyUp(expKeyUpFunction(this.value)).blur(expBlurFunction());

Что ожидается от этого кода - это div, показывающий доступные предложения для всех браузеров.

Буду очень признателен, если вы поможете мне.

...