2011-12-01 45 views
3

如果文本框爲空時如何防止提交表單?如果文本框爲空,則使用PHP提交提醒消息

這是我在JSP中成功使用警報消息完成的。

的Javascript:

function validate() 
{ 
    var x=document.forms["Form1"]["comp"].value; 
    if (x==null || x=="") 
    { 
    alert("comp cannot be blank"); 
    return false; 
    } 

    <form name="Form" action="welcome.php" onsubmit="return validate()" method="post"> 
     <input type="text" name="comp"> 

我該怎麼辦了使用PHP一樣嗎?因此,無論何時用戶提交而不輸入文本,它都應通過javascript alert()消息向用戶發送消息。

我可以顯示警報消息:

echo '<script language="javascript">alert("comp cant blank");</script>'; 

但如何,我可以給的條件有哪些變化已經在上面進行,請把它放在form.i必須這樣做只能在代碼? PHP。

回答

8

您無法使用PHP停止提交表單。

PHP是服務器端,如果您的驗證有問題,您需要有Javascript來處理表單提交。您應該在客戶端(JS)和服務器端(PHP)處理驗證。

所以不行,只要PHP如你所述,不可能的,表單將提交,然後你驗證它。無法用PHP停止它(就像用戶的HTML一樣)。

+2

即使你做到這一點使用PHP(我在想一個Ajax提交和服務器端驗證,以防止被提交的表格)確認你仍然需要在實際表單提交再次進行驗證,因爲使用Firebug的人,或沒有JavaScript的瀏覽器仍然可以發送錯誤的數據。 –

0

您可以使用XHR(稱爲AJAX)提交表單並讓php驗證數據。 您仍然需要使用javascript提交XHR。

1

你可以從這個jQuery的代碼中使用:

$("#btnSubmitID").click(function(event){ 
    if($("#txtID").val()==''){ 
      event.PreventDefault(); 
      alert("your message"); 
    } 
}); 

這是一個示例,您可以用郵寄到服務器之前,這種方式驗證您的形式。

+1

你誤解了這個問題,他沒有要求javascript驗證(因爲他已經這樣做了) –

-1

以下是我用於處理表單的一般方法。

僞代碼:

Has Form Been Submitted? 
    Is form valid? 
     process form (db insert/update/delete, other operation here 
    Else 
     Print form with error messages and optionally a javascript alert 
    End is form valid 
Else 
    Print form without error messages 
End has form been submitted 
+1

嚴禁..要求OP進行php實時驗證,並且你給他僞代碼驗證算法? :/請大家仔細閱讀問題.. –

+1

如果你使用POST,然後檢查$ _POST ['field_name'] - 你不能在PHP中使用DOM地址。 –

+2

@damien我從他的問題推斷他的意圖 - 他打算阻止處理表單提交。由於OP與JSP的歷史,這個問題似乎令人困惑。我只是試圖幫助我的經驗。如果有人有更好的答案,我可以。 –

0

JavaScript代碼看起來不錯,它不應該在其空提交表單。但是,如果您想從PHP代碼執行操作,則可以執行相同的操作,但當表單無效(或空白)時,需要提交併返回相同的頁面。

下面是示例代碼

<?php 
    if ($_POST['comp'] == '') 
    { 
    header("location:yourpagename"); 
    } 
else 
{ 
// process 
} 
?> 
+0

表格不應提交。它只是給用戶留言文本框shludn't是空的。我怎樣才能做到這一點? – user1074824

+0

當你從javascript代碼返回false時,它不應該提交。 – AjayR

0

而現在的非僞代碼的答案。這是經過測試的代碼,詳細闡述了我已發佈的概念。

<?php 
function formWasPosted() 
{ 
    return array_key_exists('comp', $_POST); 
} 
// ------- 
function validate(&$errors) 
{ 
    if ($_POST['comp'] == '') 
    { 
     $errors['comp'] = 'cannot be blank'; 
    } 

    return count($errors) == 0; 
} 
// ------- 
function getError($fieldName, $errors) 
{ 
    $out = ''; 

    if (array_key_exists($fieldName, $errors)) 
    { 
     $out = '<span class="errorMsg">' . $errors[$fieldName] . '</span>'; 
    } 

    return $out; 
} 
//------------------------------------------------------------------------ 
// $errors will be passed to our validate function so we can set error messages per field if desired. 
$errors = array(); 
$formMsg = ''; 

if (formWasPosted()) 
{ 
    if (validate($errors)) 
    { 
     // do processing here 
     header('Location: http://www.example.com/success'); 
     exit(); 
    } 
    $formMsg = '<div class="errorNotice">There were problems with your submission</div>'; 
} 
?> 
<html><head> 
<script type="text/javascript"> 
    function validate() 
    { 
     var x=document.forms["Form1"]["comp"].value; 
     if (x==null || x=="") 
     { 
      alert("comp cannot be blank"); 
      return false; 
     } 
    } 
</script> 
<style> 
.errorMsg, .errorNotice { color: red; } 
.errorNotice { font-size: 150%;} 
</style> 
</head> 
<body> 
    <?php echo $formMsg; ?> 
    <form name="Form" action="welcome.php" onsubmit="return validate()" method="post"> 
     <label for="comp">Comp <?php echo getError('comp', $errors); ?></label> 
     <input id="comp" type="text" name="comp"> 
    </form> 
</body> 
</html> 
+0

就這樣我們清楚這一點......沒有辦法阻止使用php提交表單,最好的做法是根據表單提交進行驗證和選擇性處理。 –

相關問題