2014-12-12 1 views
0

내 프로젝트에서 웹 페이지에서 Reject Remarks를 검색하는 JSP가 있습니다.Safari 5.1.7 JSP의 텍스트 영역에 텍스트가 중복되었습니다.

 <% 
     String rejectRemarks = null; 
     String rejectType = null; 
     String isScrap = "N"; 
     if(request.getParameter("rejectRemarks") != null && request.getParameter("rejectRemarks")!="undefined") 
     { 
      rejectRemarks = request.getParameter("rejectRemarks"); 
      rejectType = request.getParameter("rejectType"); 
      //System.out.println("in remarks.jsp reject remarks before substring ::" + rejectRemarks); 
      if(rejectType != null && rejectType.equals("S")) 
       isScrap="Y";    
     } 
     else  
      rejectRemarks = ""; 

     %> 
     <html> 
     <head> 
     <script type="text/javascript"> 
     var remarksValue = ""; 
     function showDetails() 
     { 
     var maxlength=255; 
     var e = window.event; 
     remarksValue = document.getElementById("remarks").value; 
     if(remarksValue == undefined || remarksValue == null ||MyTrim(remarksValue).length==0) 
     { 
       remarksValue = "";  
       document.getElementById("validity").value="Enter valid remarks"; 
       document.getElementById("remarks").value=""; 
     } 
     else 
     { 
      if(remarksValue.length>maxlength) 
      { 

       showError("TCW325","","","",true); 
       return;  
      } 
     window.returnValue=remarksValue; 
     document.getElementById("remarksEntered").value = remarksValue; 
     window.close(); 
     } 
     } 
     function fCase(o) 
     { 
     o.value=o.value.toUpperCase(); 
     } 
     function wc() 
     { 
      var bwserAgnt = navigator.userAgent; 
      if(bwserAgnt.indexOf("Chrome")!= -1) 
      { 
       document.onkeydown = function(e) 
       { 
        if(remarksValue.length>255 && e.keyCode!=8) 
        { 
         var remarksValue = document.getElementById("remarks").value; 
         remarksValue = remarksValue.slice(0,-1); 
         document.getElementById("remarks").value = remarksValue; 
        } 
        else 
        wcNew(e); 
       } 
      } 
      else if(bwserAgnt.indexOf("Safari")!= -1) 
      { 
       document.onkeydown = function(event) 
       { 
        event = event || window.event; 
        if (event.keyCode == 8 || event.keyCode == 37 || 
         event.keyCode == 38 || event.keyCode == 39 || 
         event.keyCode == 46 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 16) 
         { 
          if(remarksValue.length>255 && e.keyCode!=8) 
          { 
           var remarksValue = document.getElementById("remarks").value; 
           remarksValue = remarksValue.slice(0,-1); 
           document.getElementById("remarks").value = remarksValue; 
          } 
          else 
          wcNew(event); 
         return true; 
        } 
        else 
        { 
           return false; 
        } 
       } 
      } 
      else if(bwserAgnt.indexOf("Firefox")!= -1) 
      { 
       var e = window.event; 
       if(window.event.keyCode!=8) 
       { 
        var remarksValue = document.getElementById("remarks").value; 
       if(remarksValue.length>255){ 
        remarksValue = remarksValue.slice(0,-1); 
       } 
        document.getElementById("remarks").value = remarksValue; 
       } 
       wcNew(e); 
      } 
      else 
      { 
       var e = window.event; 
       if(window.event.keyCode!=8) 
       { 
        var remarksValue = document.getElementById("remarks").value; 
       if(remarksValue.length>255){ 
        remarksValue = remarksValue.slice(0,-1); 
       } 
        document.getElementById("remarks").value = remarksValue; 
       } 
       wcNew(e); 
      } 
     } 
     function wcNew(e) 
     { 
      characterCode = e.keyCode ;//character code is contained in IE's keyCode property 
      if(characterCode == 13) 
      { 
       var remarksValue = document.getElementById("remarks").value; 
       document.getElementById("remarksEntered").value = remarksValue; 
       showDetails(); 
      } 
     } 
     function checkMaxLength(me) 
     { 
     var maxlength=255; 
     var strRemarks=me.value; 
     if(strRemarks.length >= maxlength) 
     { 
      alert("Remarks should not exceed 255 characters"); 
      return false; 
     } 
     } 
     function close1() 
     { 
     window.close(); 
     } 
     </script> 
     <% 
     if(isScrap.equals("Y")){ 
     %> 
     <title>Scrap Remarks</title> 
     <% 
     }else 
     { 
     %> 
     <title>Reject Remarks</title> 
     <%}%> 
     </head> 

     <body onKeyPress="wc();" > 
     <form Autocomplete="off" name ="frmMain" id="frmMain" method="post" > 
     <table> 
     <tr> 
     <td> 
     <INPUT TYPE="text" name="validity" id="validity" CLASS='cwInputBoxReadOnly' readOnly > 
     </td> 
     </tr> 

     <tr> 
     <td> 
      <textarea id="remarks" name="remarks" rows="8" cols="25" onkeypress="return checkMaxLength(this);" ><%=rejectRemarks==null?"":rejectRemarks%></textarea> 
     </td> 
     </tr> 
     </table> 
     <table align="center"> 
     <tr>  
     <td> 
     <input type="button" class="grayTabHeaderSelected" id ="OK" name="OK" value="OK" align="CENTER" onClick="javascript:showDetails()"/> 
     </td> 
     <td> 
     <input type="button" class="grayTabHeaderSelected" id ="CANCEL" name="CANCEL" value="CANCEL" align="CENTER" onClick="close1()"/> 
      </td> 
     </tr> 
     </table> 
     <input type="hidden" id="remarksEntered" name="remarksEntered"> 


     </body> 
     </html> 

내에서이 방법이 방법 내에서 WC(); 페이지에서 keypress를 호출했습니다. 모든 브라우저의 코드를 확인합니다. Safari 브라우저에서 직면하게되는 문제는 텍스트 상자에 입력 된 모든 키에 있습니다. 예를 들어 SShameerr와 같은 두 번 나타납니다. Google에서 많은 검색을하고 이에 따라 코드를 구현했습니다. 나는 아직도 내가 먼저 문자 예컨대 SSameer 반복됩니다 같은 문제에 직면하고있다 http://answers.microsoft.com/en-us/windows/forum/windows_7-networking/characters-entered-twice-in-modal-dialog-under/134789c1-7845-4d10-ade2-9ff3b3a60085

링크 아래 따랐다. 해당 JSP에 대해 새 클릭이 발생할 때만 발생합니다.

도움이되었습니다. 미리 감사드립니다.

답변

0

나는 하나의 솔루션을 찾았습니다. 동일한 메소드 WC()에서도 keypress 이벤트에 대한 코드를 추가했습니다. key = 전역 변수

document.onkeypress = function(event) 
{ 
    if(key == event.keyCode) 
    { 
     return false; 
    } 
    else 
    { 
     key = event.keyCode; 
    } 
} 

그것은 나를 위해 일했습니다.

관련 문제