2012-01-22 67 views
0

在輸入(表單)數據被輸入後驗證輸入(表單)數據的最佳方法是什麼?(JQuery/PHP)在提交之前驗證數據

我的想法是有一個DIV旁邊的輸入,這個div是,我們會看到一個消息,說數據是否有效與否,如:

Your name: 
<input type="text"> 
<div id="data-validation"></div> 

<script> 
$("input").change(function(){ 
    $("#data-validation").load("data-validation.php?input="+$(this).val()); 
}); 
</script> 

//data-validation.php 
<?php 
$input = $_GET["input"]; 
if(strlen($input) < 3) 
    echo "Name must have at least 3 characters."; 
?> 

和PHP需要驗證的關懷和顯示數據。

恐怕還有更好的方法可以做到這一點,我想知道做這件事的最好方法是什麼。

+0

對於「在他們鍵入」階段進行驗證,如果您的驗證規則只是關於字符數,格式和/或數據類型,我建議您在JavaScript中執行所有操作。如果你想檢查數據庫出於某種原因(例如,驗證街道地址或其他),那麼_then_你可以使用類似於你的例子的Ajax/PHP。請注意,樣本中的'.change()'事件永遠不會被觸發,因爲您已將它設置在div上而不是輸入上。另外,請注意,一旦表單實際提交後,您應該_always_(重新)驗證PHP中的字段。 – nnnnnn

+0

是的,你說得對。我也將不得不在所有數據被提交後重新驗證數據,否則它將很容易被破解。謝謝。 – user1091856

+0

[JavaScript驗證]可能重複(http://stackoverflow.com/questions/5067410/validation-by-javascript) – outis

回答

1

我強烈建議使用jQuery Validate你仍然需要驗證在PHP一邊,但是這將節省您大量的工作在UI/jQuery的事情

2

絕對的一面!

您可以從JavaScript端執行大部分字符串檢查以防止對服務器進行不必要的調用。你還是留着你的PHP檢查,但現在要將其複製到JavaScript的結束,例如:

$("#data-validation").change(function(){ 
    if($(this).val().length >= 3) { 
     $(this).load("data-validation.php?input="+$(this).val()); 
    } else { 
     alert("Name must have at least 3 characters."); 
    } 
}); 

如果你有多次檢查,而不是檢查長度,覈對,做了一系列任務的功能在JavaScript端。你想確保你的PHP做同樣的事情,因爲瀏覽器的JavaScript可以很容易地被繞過。您希望通過減少對服務器的調用來優化,並使用更多的本地資源。

+0

我明白你的觀點。但我試圖讓自己的例子儘可能簡單,實際上我也得做一些服務器端驗證,因爲這些數據將被保存在MySQL中,並且不會有重複數據,所以是的不做這項工作。謝謝。 – user1091856