2011-11-29 60 views
0

我需要使用jQuery來驗證我的聯繫表單。我正在關注一個來自YouTube的示例h ttp://www.youtube.com/watch?v=8wUu7pWBygY&feature=relmfuJquery:驗證表單而不刷新頁面

儘管它只適用於我使用單個字段,但是,如果想要使用解決方案添加字段以進行驗證,則不再適用。

這裏是我的頭:

<script type="text/javascript" > 

      $(document).ready(function() { 
       //$('.error-div').load('action/validate_signup.php').show(); 

       $('#fname').keyup(function() { 
        $.post('action/validate_signup.php', { fname: form.fname.value }, 
        function(result){ 
         $('#fname-error').html(result).show("slow"); 
        }); 

       }); 


       $('#lname').keyup(function() { 
        $.post('action/validate_signup.php', { lname: form.lname.value }, 
        function(result){ 
         $('#lname-error').html(result).show("slow"); 
        }); 

       }); 
      }); 

     </script> 

,這是我的假設是驗證過程:

<?php 

    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 

    if(empty($fname)){ 
     echo " *First Name Required"; 
    }elseif(strlen($fname)<=3){ 
     echo "*Name too short!"; 
    }else{ 
     echo "<img src='images/check.jpg' />"; 
    } 

    if(empty($lname)){ 
     echo " *Last Name Required";  
    }elseif(strlen($lname)<=3){ 
     echo "*Lastname too short!"; 
    }else{ 
     echo "<img src='images/check.jpg' />"; 
    } 



?> 

請幫幫忙,在此先感謝和更多的權力

回答

3

的問題是,你或者將fnamelname提供給驗證腳本,但不能同時提供。您的驗證腳本將始終返回錯誤。

我建議使用isset功能檢查fnamelname是否提供給劇本可言,與empty檢查之前。

+0

我一定會嘗試使用isset()函數,希望工程 – Dan

0

使用客戶端驗證在這裏看起來更好。當你把jQuery標籤,如何使用http://docs.jquery.com/Plugins/Validation

+0

客戶端驗證在這種情況下會提供更好的用戶體驗,但他仍然需要在服務器上進行驗證以確保提交的數據是有效的。 – PatrikAkerstrand

+0

我會同意,如果這是電子郵件或用戶名唯一性驗證,但只是爲了長度或如果字段是必需的?我會在保存到數據庫之前檢查後檢查。 – torm

+0

請不要介意字符串長度驗證:-),我只是把它放在那裏有東西來驗證。 – Dan

0

因爲它們都使用相同類型的驗證(檢查長度是否大於3),只需使用一個函數來檢查它。也可以使用html5來創建所需的字段,以便它不會被提交到服務器,除非它被填寫。

HTML:

<input type="text" id="lname" required/> 

腳本:

$('#lname').keyup(function(){ 
    var lname = $.trim($(this).val()); 
    $.post('check.php', {'value' : lname}, function(data){ 
    $('#lname-error').html(result).show("slow"); 
    }); 
}); 

而這裏的check.php:

$valid = check_length($_POST['value']); 
echo $valid; 

function check_length($str){ 
    $clean_string = mysql_real_escape_string($str); 
    if(str_len($clean_string) <= 3){ 
     //return error message 
    }else{ 
     //return check mark 
    } 
}