Jquery:验证表单而不刷新页面

时间:2011-11-29 08:44:11

标签: php jquery mysql validation

我需要帮助才能使用jquery验证我的联系表单。我正在关注来自youtube h ttp://www.youtube.com/watch?v=8wUu7pWBygY&feature=relmfu

的示例

虽然它只对我使用一个字段起作用,但是,如果想要添加一个字段来使用解决方案进行验证,它就不再起作用了。

这是我的标题:

<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 个答案:

答案 0 :(得分:3)

问题是您要么为验证脚本提供fnamelname,要么不提供两者。您的验证脚本将始终返回错误。

我建议使用isset功能检查脚本是否已提供fnamelname,然后再使用empty进行检查。

答案 1 :(得分:0)

使用客户端验证在这里看起来更好。在放置jquery标记时,如何使用http://docs.jquery.com/Plugins/Validation

答案 2 :(得分: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
   }
}