2013-05-30 114 views
0

我有一些JavaScript和PHP代碼編寫來驗證一個字段。兩種代碼都要驗證字段是否爲空,是否在35個字符的限制內,並且只包含字母字符和連字符( - )。我想要做的是同時驗證javascript和php,並顯示它們是用於輸入不正確數據的消息,但它似乎只是由於事件彈出警報,但沒有顯示消息PHP方面。這是我的代碼:javascript和php驗證?

<script type="text/javascript"> 

function validateFamily() 
{ 
var family=document.getElementById('family'); 
var stringf = document.getElementById('family').value; 
var ck_password = /^[A-Za-z-]/; 
if (family.value=="") 
    { 
    alert("Family name must be filled out"); 
    return false; 
    } 
else if (document.getElementById('family').value.length > 35) 
    { 
     alert("Family name cannot be more than 35 characters"); 
     return false; 
    } 
else if(!ck_password.test(stringf)) 
    { 
     alert("Family name can only contain alphabetic characters and hypehns(-)"); 
     return false; 
    } 
    return true; 
} 

</script> 

<?php 

if (isset($_POST['submit'])) { 

$flagf = false; 
$badcharf = ""; 
$stringf = $_POST["family"]; 
$stringf = trim($stringf); 
$lengthf = strlen($stringf); 
$strmsgf = ""; 

if ($lengthf == 0) { 
$strmsgf = '<span class="error"> Please enter family name</span>'; 
$flagf = true;} 
else if ($lengthf > 35) { 
$strmsgf = '<span class="error"> Can not enter more than 35 characters</span>'; 
$flagf = true;} 
else { 
for ($if=0; $if<$lengthf;$if++){ 
    $cf = strtolower(substr($stringf, $if, 1)); 
    if (strpos("abcdefghijklmnopqrstuvwxyz-", $cf) === false){ 
     $badcharf .=$cf; 
     $flagf = true; 
    } 
} 
if ($flagf) { 
    $strmsgf = '<span class="error"> The field contained the following invalid characters: '.$badcharf.'</span>';} 
} 
if (!$flagf) { 
    $strmsgf = '<span class="error"> Correct!</span>';} 

} 

?> 

<form name="eoiform" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validateFamily() && validateGiven() && validateMaleFemale() && validDate() && validateAddress() && validatePost() && validateParent() && validateWork() && validateHome() && validateMob() && validateCheckBoxes() && validateTextBoxes();"> 

<b>Student's Family Name</b> 
<br> 
<input type="text" id="family" name="family" /><?php echo $strmsgf; ?> 

<input type="submit" name="submit" id="submit" value="submit" /> 

</form> 

任何人都可以幫助我嗎?

回答

5

你的JavaScript和PHP不能同時執行,因爲前者在用戶的瀏覽器發生形式張貼前,後者發生這一次之後,形式已達到服務器。

您可以通過在瀏覽器中檢查您的網頁的源代碼來驗證這一點:沒有PHP!

如果您的JavaScript成功了,則不會向服務器發送任何內容,因爲您的文件爲return false。在實踐中,有意義的是在以下情況下進行服務器端檢查:

  1. 有人很棘手並在驗證之後但在發送之前修改表單。
  2. 由於某種原因,JavaScript被禁用或中斷。
+0

好的,謝謝你的信息! – AJJ

0

這種形式的工作方式是,你在表單的onsubmit屬性中有一個JS函數,如果一個值是錯誤的,它可以阻止表單的提交。如果您的JS函數由於錯誤而返回false,則表單將永遠不會被提交。

爲了得到你想要的功能,你需要僅在服務器端執行的檢查,但你需要每次都爲發生提交表單...

的另一種方式當用戶完成向每個文本字段添加值時,即檢查輸入的值,即將JS函數附加到字段的blur()屬性,並向您的服務器發出AJAX調用,以便驗證字段內容該表單實際上已提交。

您可以使用jQuery的驗證插件用於更復雜的驗證,如果這些都可以在客戶端完成,以及:

http://jqueryvalidation.org/

0

由於paislee說沒有辦法,你可以同時運行PHP和JavaScript的。然而,您可以發送動態請求來運行一些PHP代碼,它被稱爲AJAX。這也不能確保絕對準確的同時執行,但會更接近你的目標。