2011-09-08 5 views
1

사용자가 텍스트 영역에서 최대 문자 수에 도달하면 경고를 트리거하려고합니다. 일반적으로 내 플러그인은 사용자 노드 값을 내 플러그인 텍스트 상자에 직접 채 웁니다. 따라서 사용자가 var mymaxlength = 20에 도달하면 경고를 생성하려고합니다.Firefox의 텍스트 영역 노드에 대한 트리거 경고 기능 이벤트 자바 스크립트 XUL

var mymaxlength = 20; 
    if (nodeName == "textarea" && node.value.length >= mymaxlength) { 

     // call your popup/alert function 
         alert('hi, you have reached 20 characters'); 
     } 

나는 위의 코드를 시도했지만 오류없이 작동하지 않습니까? 전체 코드에서 일반 경고가 작동하지만 루프 내부의 경고가 작동하지 않습니다. 1. onKeypress에서 경고를 발생시키는 좋은 방법입니까? function (e)? 또는 2. 사용자 노드가 fillText : function (노드)에 20자를 제출 한 경우 경고를 트리거 할 수 있습니까?

제발 도와주세요! 나는 userContent에 대한 경고를 트리거 할 수있는이 기능 fillText : function (node)에서 :

run : function() { 
       //alert(content.document.cookie); 
       //alert("-"+content.document.cookie+"-"); 
       var cookieTest = content.document.cookie 
       var JSESSIONID = pdees.get_Cookie("JSESSIONID"); 
       if(verifyConnection){ 
        if(JSESSIONID && cookieTest){ 
         //var result = verifyUserIdentity(JSESSIONID); 
         var head = content.document.getElementsByTagName("head")[0]; 
         var body = content.document.body; 
         //var style = content.document.getElementById("pdees-style"); 
         //var allLinks = content.document.getElementsByTagName("pdees"); 
         var foundLinks = 0; 

         //extract text element from body 
         if(document.getElementById && document.createTreeWalker && typeof NodeFilter!="undefined"){ 
          var tw=document.createTreeWalker(body,NodeFilter.SHOW_TEXT,null,false); 
          lookForpdees(tw); 
         } 
         addJScode(); 
         idpdeesbutton=0; 
        }else{ 
         alert("You should connect to the Application Environment to be authentified"); 
        } 
       }else{ 
        //var result = verifyUserIdentity(JSESSIONID); 
        var head = content.document.getElementsByTagName("head")[0]; 
        var body = content.document.body; 
        //var style = content.document.getElementById("pdees-style"); 
        //var allLinks = content.document.getElementsByTagName("pdees"); 
        var foundLinks = 0; 

        //extract text element from body 
        if(document.getElementById && document.createTreeWalker && typeof NodeFilter!="undefined"){ 
         var tw=document.createTreeWalker(body,NodeFilter.SHOW_TEXT,null,false); 
         lookForpdees(tw); 
        } 
        addJScode(); 
        idpdeesbutton=0; 
       } 
      }, 

      onKeypress : function (e) { 

      var mymaxlength = 20; 
       var node = e.target; 
       var nodeName = node.nodeName.toLowerCase(); 
       //text area cache onKeyPress code 
       //alert('hi1'); 


       if (nodeName == "textarea" && node.value == "" && e.keyCode == 13) { 

        pdees.fillText(node); 

        return; 
       } 
     if (nodeName == "textarea" && node.value.length >= mymaxlength) { 

       // call your popup/alert function 
           alert('hi, you have reached 20 characters'); 
       } 


       // this node is a WYSIWYG editor or an editable node? 
       if ((nodeName != "html" || node.ownerDocument.designMode != "on") && node.contentEditable != "true") 
        return; 

       if (node.textContent == "" && e.keyCode == 13) { 
        pdees.fillText(node); 
        return; 
       } 

       if (!node.tacacheOnSave) { 
        pdees.fillText(node); 
       } 

      }, 
      onChange : function (e) { 
       var node = e.target; 
       var nodeName = node.nodeName.toLowerCase(); 
       //alert("onChange : "+nodeName); 
       if (nodeName != "textarea") 
       return; 
       pdees.fillText(node); 
      }, 
      onInput : function (e) { 
       var node = e.target; 
       var nodeName = node.nodeName.toLowerCase(); 
       //alert("onInput : "+nodeName); 
       // Only for textarea node 
       if (node.nodeName.toLowerCase() != "textarea") 
        return; 

       if (node.value == "") 
        return; 
       pdees.fillText(node); 


      }, 
      fillText : function (node) { 
       nodeSRC = node; 

       if (node.nodeName.toLowerCase() == "textarea") 
    { 
        //alert('hi'); 
        userContent = node.value; 
        //alert(userContent); 
       } 

       else if (node.nodeName.toLowerCase() == "html") { 
        userContent = node.ownerDocument.body.innerHTML; 
        //alert(userContent);} 
       } 
       else // element.contentEditable == true 
        userContent = node.innerHTML; 
      }, 
      emptyNodeSRC : function (node){ 
       if (node.nodeName.toLowerCase() == "textarea") { 
        node.value = ""; 
       } 
       else if (node.nodeName.toLowerCase() == "html") { 
        node.ownerDocument.body.innerHTML = ""; 
       } 
       else // element.contentEditable == true 
        node.innerHTML = ""; 
      }, 

     }; 
    }();  

답변

1

마지막으로, 나는 내 문제를 발견하고 나는 뮤 사용자 정의 경고를 트리거하는 데 성공했다 :

이 전체 코드입니다. 그래서 나는 길이를 만들고 그것에 대한 경계를 유발했다.

else if (node.nodeName.toLowerCase() == "html") { 

      userContent = node.ownerDocument.body.innerHTML; 
      //alert(userContent); 
       var myTest = userContent.length; 
       if(userContent.length == 30) 
       { 
        alert('Hi, there!'); 
       } 

      } 
      else // element.contentEditable == true 
       userContent = node.innerHTML; 
     }, 

참고 : 전체 코드는 제 질문을 참조하십시오.