2011-03-25 51 views
3

我有JSPX擴展文件我寫javascript像的JavaScript在JSF/ICEfaces的

function isNumber(inputId){ 

      var value = document.getElementById('mainForm:'+ inputId).value; 
      var s = value.length; 

      while(s >= 0){ 
       var c = value.charAt(s); 
       if(c > "9"){ 
        alert("Value must be digit"); 
        document.getElementById('mainForm:'+ inputId).value = ""; 
        document.getElementById('mainForm:'+ inputId).focus(); 
        return false; 
       } 
       s --; 
      } 
      return true; 
     } 

的工作完美的,但是當我檢查,如果條件一樣,如果(C> 「9」 ||Ç< 「0」)它會給出類似

com.sun.facelets.FaceletException: Error Parsing /WEB-INF/includes/templates/cc-classic-template.jspx: Error Traced[line: 386] The content of elements must consist of well-formed character data or markup. 

錯誤長時間的觀察後,我發現,<(小於)符號將創建問題。 JSF不支持<標誌嗎?

回答

0

除了逃逸和CDATA答案:

如果你想檢查的值是一個數字,對於一個JavaScript的內置函數:isNaN

下面是一個例子:

if (isNaN(document.getElementById('mainForm:'+ inputId).value)) 
    { 
    alert("Please enter digits"); 
    document.getElementById(obj).focus(); 
    document.getElementById(obj).select(); 
    return false; 
    } 
+0

是的我解決了我的問題 – chetan 2011-03-26 06:00:37

10

附上你的Javascript在CDATA節:

<script language="javascript" type="text/javascript"> 
/* <![CDATA[ */ 

    function isNumber(inputId){ 

      var value = document.getElementById('mainForm:'+ inputId).value; 
      var s = value.length; 

      while(s >= 0){ 
       var c = value.charAt(s); 
       if(c > "9"){ 
        alert("Value must be digit"); 
        document.getElementById('mainForm:'+ inputId).value = ""; 
        document.getElementById('mainForm:'+ inputId).focus(); 
        return false; 
       } 
       s --; 
      } 
      return true; 
     } 

     //Code containing "<" also comes in this section 

/* ]]> */ 
</script> 
4

正如馬特·漢迪解釋,你不能使用你的JSPX的<>跡象,因爲這是一個XML格式。關於您的問題,您有三種解決方案:

  • 使用&lt;&gt;進行退出。
  • 使用<![CDATA[ ... ]]>將JavaScript代碼保存在您的頁面中。
  • 將您的JavaScript代碼設置在單獨的.js文件中,並將其加載到JSPX頁面中。