2012-03-28 8 views
0

Ich verwende Cognos und ich versuche, die Eingabetaste abzufangen, so dass die Benutzereingabe überprüft wird, bevor die Eingabeaufforderung gesendet wird.Abfangen von "Enter Key" funktioniert mit IE aber nicht Firefox - in Cognos verwendet

Auch wenn Sie keine Erfahrung in cognos haben, würde ich es begrüßen, wenn Sie sich meinen Code ansehen :) Es ist so ziemlich ein Drag & Drop-Programm für Geschäftsberichte.

Ich habe eine Textbox Eingabeaufforderung auf meiner Cognos-Eingabeaufforderungsseite und ich versuche, ein 3 Zeichen Minimum für Benutzereingaben festzulegen. Ich habe diese Textbox-Eingabeaufforderung mit einem div mit HTML-Elementen umgeben, wie unten gezeigt.

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

Ich habe dann ein anderes HTML-Element, das die Funktion keyMon() enthält, wie unten gezeigt.

<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> 

Wie ich oben sagte, funktioniert dies gut mit IE. Wenn es in Firefox läuft, nimmt es die Enter-Taste, die Alarm-Box erscheint wie es sollte, aber nur für eine Millisekunde und verschwindet dann. Aber es geht immer noch zur nächsten Seite. Also offensichtlich die "Rückkehr falsch"; tut nicht viel.

Jede Hilfe wäre willkommen.

Antwort

0

Ich schaffte es, ein Pflaster darauf zu setzen ... Anstatt falsch zurück zu kommen, löschte ich die Parameter-Textbox, so dass die Eingabeaufforderung nicht gesendet wurde. Dann habe ich den Alarm ausgelöst.

Wenn jemand die Lösung zu meiner ursprünglichen Frage hat, bitte zögern Sie nicht, es hinzuzufügen, weil es mich wirklich nervt.

<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>