0

私は Cognos を使用してenterおり、プロンプトが送信される前にユーザーの入力がチェックされるように、キーをキャッチしようとしています。

Cognos の経験がなくても、私のコードを見ていただければ幸いです :) ビジネス レポート用のドラッグ アンド ドロップ プログラムです。

Cognos プロンプト ページにテキスト ボックス プロンプトがあり、ユーザー入力に最小 3 文字を設定しようとしています。以下に示すように、HTML アイテムを使用してテキスト ボックス プロンプトを div で囲みました。

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

keyMon()以下に示すように、関数を含む別の HTML アイテムがあります。

<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 ミリ秒しか表示されずに消えます。しかし、それでも次のページに進みます。したがって、明らかに「return false;」あまりやっていません。

どんな助けでも大歓迎です。

4

1 に答える 1

0

何とかバンドエイドを貼ることができました... 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>
于 2012-03-29T11:56:48.523 に答える