Отлов «Enter Key» работает с IE, но не с Firefox - используется в Cognos - PullRequest
0 голосов
/ 28 марта 2012

Я использую Cognos и пытаюсь перехватить клавишу ввода, чтобы пользовательский ввод проверялся перед отправкой приглашения.

Даже если у вас нет опыта работы с Cognos, я был бы признателен, если бы вы посмотрели на мой код :) Это в значительной степени программа перетаскивания для бизнес-отчетов.

У меня есть текстовая подсказка на моей странице приглашения cognos, и я пытаюсь установить минимум 3 символа для пользовательского ввода. Я окружил это текстовое поле с помощью элементов HTML, как показано ниже.

<div onKeyDown="return keyMon(event)"> Cognos Text Box </div>

Затем у меня есть другой элемент HTML, который содержит функцию keyMon (), как показано ниже.

<script>
function keyMon(e3)
{
    var key = e3 || window.event;

    if(key.keyCode == 13){

        var fW = (typeof getFormWarpRequest == "function" ?
        getFormWarpRequest() : document.forms["formWarpRequest"]);
        if ( !fW || fW == undefined) {
            fW = ( formWarpRequest_THIS_ ?
            formWarpRequest_THIS_ : formWarpRequest_NS_ );
        }

        var custValue = fW._textEditBoxCustomerPrompt;  

        if(custValue.value.length > 0){
            if(custValue.value.length >= 3){
                promptAction('next'); //Submit the user's input
            }else{
                alert("Please enter a search value that is 3 or more characters long.");
                return false;
            }
        }
    }
}
</script>

Как я уже говорил выше, это нормально работает с IE. Когда он запускается в Firefox, он берет клавишу Enter, окно предупреждения появляется, как и должно, но только на миллисекунду, а затем исчезает. Но это все еще продолжается на следующей странице. Итак, очевидно, «вернуть ложь»; не делает много.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 29 марта 2012

Мне удалось надеть на него лейкопластырь ... Вместо того, чтобы вернуть false, я очистил текстовое поле параметров, таким образом, заставив приглашение не отправлять. Затем я включил предупреждение.

Если у кого-то есть решение моего первоначального вопроса, пожалуйста, не стесняйтесь добавлять его, потому что это действительно беспокоит меня.

<script>
function keyMon(e3)
{
    var key = e3 || window.event;

    if(key.keyCode == 13){

        var fW = (typeof getFormWarpRequest == "function" ?
        getFormWarpRequest() : document.forms["formWarpRequest"]);
        if ( !fW || fW == undefined) {
            fW = ( formWarpRequest_THIS_ ?
            formWarpRequest_THIS_ : formWarpRequest_NS_ );
        }

        var custValue = fW._textEditBoxCustomerPrompt;  

        if(custValue.value.length > 0){
            if(custValue.value.length >= 3){
                promptAction('next'); //Submit the user's input
            }else{
                //Delaying the alert box so that the user's enter press will not exit the alert box.
                setTimeout("alert('Please enter a search value that is 3 or more characters long.')",250);
                fW._textEditBoxCustomerPrompt.value = "";   
            }
        }
    }
}
</script>
...