2011-08-17 17 views
1

從JSP值下面是我的JSP頁面上的JavaScript:檢索到的Javascript

<SCRIPT language="JavaScript"> 
function checkPass(){ 

var pass1=request.getParameter('password'); 
var pass2=request.getParameter('password2'); 

    if (pass1==pass2){ 
     window.alert("YES"); 
    } 
    else{ 
     window.alert("NO"); 
    } 
    } 
</SCRIPT> 

下面是我的表單輸入文本框:

    <h:outputLabel value="Password:" for="password" /> 
<h:inputSecret id="password" value="#{StaffController.staff.password}" 
      size="20" required="true" 
      label="Password" > 
      <f:validateLength minimum="8" /> 
     </h:inputSecret> 

     <h:message for="password" style="color:red" /> 

        <h:outputLabel value="Password:" for="password2" /> 
<h:inputSecret id="password2" 
      size="20" required="true" 
      label="Password" > 
      <f:validateLength minimum="8" /> 
     </h:inputSecret> 
<h:message for="password2" style="color:red" /> 

下面是我的命令按鈕與onmousedown事件致電聯繫腳本點擊時:

<h:commandButton action="#{StaffController.saveUser()}" onmousedown="checkPass();" value="Submit"/> 

我似乎無法從我的用戶輸入表單中檢索值。

回答

0

首先,您需要在h:form中將false值設置爲「prependId」屬性,以便可以通過javascript在id上獲取文本框。

現在您需要更改javascript。 JavaScript在客戶端執行。您無法從請求中獲取數據,因爲執行javascript時請求沒有完成。

你需要得到inputSecret對象,在HTML是一個輸入項,使用這樣的事情:

var pass1 = document.getById('password').value; 
var pass2 = document.getById('password2').value; 
+0

所以它很可能會工作後,我改變了這兩條線,沒有別的? 你是什麼意思,通過改變h:形成false值爲「prependld」? – RUiHAO

+0

如果您沒有添加到標記(需要包含整個表單)jsp上的prependId =「false」,則生成的HTML代碼中元素的id是使用自動過程定義的,該過程會生成不可預知的id,而不是你添加到控件中的那些。您可以查看它,查看導航器中最後一頁的html源代碼。 – Dubas

+0

所以h:form標籤應該覆蓋我的腳本,直到我的命令按鈕? – RUiHAO

2
  1. JSF改變組件的ID - 瀏覽器查看網頁的源。它應該是這樣的形式ID +組件ID的組合

  2. 提交指令製作提交之前調用onmousedown事件的事件,所以在checkPass你沒有請求對象

  3. 更好地寫出了自定義的驗證檢查密碼