0

我正在使用 Cognos,我试图抓住enter关键,以便在提交提示之前检查用户的输入。

即使您没有 cognos 经验,如果您查看我的代码,我将不胜感激 :) 这几乎是一个用于业务报告的拖放程序。

我的 cognos 提示页面上有一个文本框提示,我正在尝试为用户输入设置最少 3 个字符。我已经用一个使用 HTML 项的 div 包围了该文本框提示,如下所示。

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

然后我有另一个包含 function 的 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 键,警告框会按应有的方式弹出,但仅持续一毫秒然后消失。但它仍然继续到下一页。所以很明显是“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 回答