首先,我想說明的是,如果您使用的是任何服務器端應用程序,那麼在對它執行任何操作之前,應絕對驗證服務器腳本上的輸入。客戶端驗證的目的是讓用戶更容易輸入正確的信息,並且如果javascript關閉,可以輕鬆入侵或無關緊要......這就是說,在客戶端,您可以攔截提交事件,檢查不同的字段值。如果您有錯誤,則顯示錯誤消息,否則,您提交表單。例如:
,如果我們有這樣的形式:
<form action"myActionscript.php" method="GET" id="#myForm">
// form items here
</form>
,然後這個腳本(請注意,代碼未測試)
<script type="text/javascript">
var f = document.getElementById('myForm');
if (f.addEventListener) { // addEventListener doesn't work in ie prior ie9
f.addEventListener('submit', checkForm);
}else{
f.attachEvent('submit', checkForm);
}
function checkForm() {
// Check all input fields logic,
// you could have an errors array and add an error message for each
// error found. Then you would check the length of the error array,
// submit the form is the length is 0 or not submit the form
// and display errors if the length is > 0.
if (errors.length > 0)
{
// iterate through the array, create final error message
// and display it through an alert or by inserting a new
// DOM element with the error message in it.
// [...]
}else{
f.submit();
}
}
</script>
我不得不說,整個事情就好辦多了當然,如果你使用了像jQuery這樣的JavaScript庫,肯定會有更多的交叉平臺...)
我想試試這個,但是當我<?php echo $ firstname; ?>在process.php上我什麼也沒得到。 – philip 2011-04-27 14:21:17
這可能與我使用window.location從dinner.html移動到process.php有關嗎? – philip 2011-04-27 14:22:06
也許,如果表單實際上沒有發佈到process.php中,那麼PHP將不會將表單中的信息提供給它。確保表單正確提交(而不是使用Javascript),並且應該解決問題。 – 2011-04-27 14:22:45