2012-09-05 39 views
0

我不知道我的問題是否非常清楚,但基本上,我正在做的是驗證JavaScript代碼中的表單,在我的頁面相同的HTML文檔中。然後,我呼籲像這樣的onsubmit方法:有沒有一種方法來驗證JavaScript中的窗體來停止onSubmit()java方法解僱?

<form wicket:id="editClientForm" id="edit-client-form" 
     onkeypress="return disableEnterKey(event)" 
     onsubmit="return editClientFormSubmitValidation()"> 

所以我有一個<input type="submit" />,每次他被壓在Java中onSubmit()方法被調用。那麼如果JavaScript中的驗證失敗,有沒有一種方法可以阻止它被觸發?

editClientFormSubmitValidation()

var submit = true; 

if (addressNumberInput.value.length == 0) { 

    showAddressNumberInputError(); 

    submit = false; 
} 

//A whole lot of verifications just like this one that will set submit to false. 

return submit; 

呈現的表單

<form id="edit-client-form" onkeypress="return disableEnterKey(event)" onsubmit="return editClientFormSubmitValidation()" method="post" action="./page?1-1.IFormSubmitListener-editClientForm"> 

渲染提交

<input type="submit" id="save-client-button" name="saveClientButton">

+0

你爲什麼要那樣?寫一個函數來做驗證。在提交調用該函數。添加寫入函數的結尾爲你的動作添加代碼如果一切順利 – knightrider

+0

@knightrider editClientFormSubmitValidation()是我的驗證函數,如果事情失敗時返回false。我不想讓它在onSubmit()java代碼中實現,因爲這意味着只是爲了進行驗證而將信息發送到服務器。我希望它是本地的。 –

+0

您發佈的代碼段中沒有任何Java代碼。 JS'editClientFormSubmitValidation'函數是否將AJAX調用回服務器或其他東西? – bobince

回答

2

當驗證失敗時,從editClientFormSubmitValidation()函數返回false。它應該工作

+0

我正在這樣做,它仍然被稱爲=/ –

0

很可能你在editClientFormSubmitValidation裏面有一個JavaScript錯誤。如果一個JS事件處理程序失敗,那麼相關事件將像往常一樣繼續執行其默認操作 - 對於form.onsubmit處理程序,這意味着如果驗證函數有錯誤,則會提交表單。

沒有更多的代碼,我們看不到錯誤是什麼(儘管我懷疑你可能缺少addressNumberInput變量的賦值/聲明?),所以打開瀏覽器的JavaScript控制檯並在那裏查找錯誤。

+0

問題不在於editClientFormSubmitValidation。我在每次比較中都放了一些警告對話框,並在方法的最後檢查了提交變量,並返回false。另外,我在其他方法中使用這些輸入,並且這些方法可以工作,所以它也不是一個賦值/聲明問題。無論如何,我決定把驗證在java,服務器端,因爲簡單地禁用JavaScript會破壞驗證。 –

+1

Eek!是的,你在任何情況下肯定都需要服務器端驗證。客戶端驗證僅供參考。 – bobince

相關問題