我試圖驗證窗體中的字段使用PHP,但我需要類似於e.preventDefault()來停止頁面刷新/加載,如果有錯誤驗證。我對JavaScript/jQuery不是很熟悉,所以我寧願用PHP處理所有POST數據(如果可能的話)。我試圖在提交時運行checkForm()函數,但是我意識到它始終返回true,因爲它在數據發佈之前運行。我也想過創建一個JS函數來調用e.preventDefault(),但我認爲我唯一的選擇是(#form).submit()函數,我想避免必須在JS/jQuery中檢索和發佈數據,因爲一些元素是DOM元素,我不確定如何在JS/jQuery中訪問它們。PHP在提交後阻止頁面刷新/加載
爲了讓你我一起工作的DOM元素的想法,下面是動態創建行的的jsfiddle:
https://jsfiddle.net/hnj6ed1y/52/
可能有多個行和領域具有相似的名稱(例如: textfield1,textfield2等)。
任何想法?提前感謝您的幫助!
<?php
// setting initial variables here
?>
<script>
var isDateTimeValid = true;
function checkDates(val) {
if (val == false) {
isDateTimeValid = false;
}
else {
isDateTimeValid = true;
}
}
function checkForm() {
if (isDateTimeValid == true) {
return true;
}
else {
alert("Please check date/times");
return false;
}
}
</script>
<?php
if(isset($_POST['next'])){
// Validating POST data here
$dateValid = convertOORDateTime($date1, $time1, $date2, $time2);
if ($dateValid < 1) {
echo "<script> checkDates(false); </script>";
$errors[] = 'Please make sure your dates are correct';
}
else {
echo "<script> checkDates(true); </script>";
}
}
$err_msg = '';
if(!empty($errors)){
// want to stop page refresh/load here
$err_msg = '<p class="error">'.implode('<br />', $errors).'</p>';
}
?>
<!DOCTYPE html>
<form name="form1" id="form1" method="post" action="<?php print $thispage;?>" onsubmit="return checkForm()">
<?php echo $err_msg; ?>
</form>
要麼你感到困惑或我,你可以做。 – bassxzero
@bassxzero我很困惑。我只是試圖驗證PHP中的POST數據(正在工作),但是當我遇到無效數據時,我需要防止重新加載頁面。我知道HTML中的「回聲」需要重新加載頁面,但我可以解決這個問題。 –
因此,您希望服務器檢查您的頁面而不刷新頁面?那可能嗎? –