duanlu0386 2015-05-12 08:39
浏览 37
已采纳

jQuery validate.js只有电子邮件未经过验证

I am using validate.js to validate my sign-up form. It works fine with all other fields but I don't understand why it does not affect email field.

Here is my validation script:

<script TYPE="text/javascript">
    $(document).ready(function(){
    $("#signup").validate({
    errorElement: 'div',
    rules:{
        "display_name":{
            required: true,
            minlength: 5
        },
        "user_email":{
            required:true,  
            email: true,
            remote: {
                url: "user/checkEmail.php",
                type: "post"
            }
        },
        "password":{
            required:true,
            minlength:6
        },
        "confirm_password":{
            required:true,
            equalTo: "#password"
        }
    },
    messages: {
        display_name:{
                    required: "Please provide your desired display name",
                    minlength: "Your display name must be at least 5 characters long"
                    },
        user_email:{
                    required: "Please provide a valid email",
                    email: "This is not a valid email!",
                    remote: "Email already in use!"
                    },
         password: {
                    required: "Please provide a password",
                    minlength: "Your password must be at least 6 characters long"
                    },
         confirm_password: {
                    required: "Please provide a confirm password",
                    equalTo: "Please enter the same password as above"
                    }
        } 
      });  
     });
 </script>

I have tried different ways to make it work but it doesn't. Here is my form:

<form class="form-horizontal" NAME="signup" id="signup" method="post" ACTION="users/register_submit.php" enctype="multipart/form-data">
            <fieldset>
                <!-- Form Name -->
                <legend>Sign Up</legend>
                <!-- Text input-->
                <DIV class="form-group">
                    <label class="col-md-4 control-label" FOR="name">Display Name</label>  
                    <DIV class="col-md-6">
                        <input id="display_name" NAME="display_name" TYPE="text" placeholder="" class="form-control input-md" required>
                    </DIV>
                </DIV>

            <!-- Text input-->
            <DIV class="form-group">
              <label class="col-md-4 control-label" FOR="email">Email</label>  
              <DIV class="col-md-6">
                    <input id="email" NAME="user_email" TYPE="email" placeholder="example@abc.com" class="form-control input-md" required>  
              </DIV>
            </DIV>

            <!-- Password input-->
            <DIV class="form-group">
              <label class="col-md-4 control-label" FOR="password">Password</label>
              <DIV class="col-md-6">
                <input id="password" NAME="password" TYPE="password" class="form-control input-md" required>
                <span class="help-block">At least 6 characters</span>
              </DIV>
            </DIV>

            <!-- Confirm-Password input-->
            <DIV class="form-group">
              <label class="col-md-4 control-label" FOR="confirm_password">Confirm Password</label>
              <DIV class="col-md-6">
                <input id="confirm_password" NAME="confirm_password" TYPE="password" placeholder="" class="form-control input-md" required>  
              </DIV>
            </DIV>            
            <!-- Button -->
            <DIV class="form-group">
              <label class="col-md-4 control-label" FOR="submit"></label>
              <DIV class="col-md-4">
                <input id="submit" NAME="submit" TYPE="submit" class="btn btn-primary">
              </DIV>
            </DIV>

            </fieldset>
        </form>

Please help me. Thanks

EDIT-UPDATE Here is my code for checkEmail.php. I have tested it and it is working fine if I test it separately.

<?php
require_once("../app/utilities/DatabaseUtility.php"); 
require_once("../app/helpers/DatabaseHelper.php"); 
    function isEmailExists($email){
            $res = array();
            $db = new DatabaseUtility('apex');
            $dbh = new DatabaseHelper;
            $db->connect();
            $col_array = array("user_email");
            $values = array($email);
            if( $statment = $db->prepareStatment('SELECT '.$dbh->getColumns($col_array).' FROM users where user_email = '.$dbh->getPlaceHolders($col_array).'')){
                $db->bindParam($statment, $dbh->getPlaceHoldersArray($dbh->getPlaceHolders($col_array)), $values, $dbh->getBindTypes($values));
                $statment->execute();
                $res = $statment->fetch();
                if(!empty($res)){
                    if(in_array($email,$res)){
                        echo "false";
                    }
                    else
                        echo "true";
                }
                else
                    echo "true";
            }
            else
                echo "Someting is wrong with your query";
            $db->releaseResources();    
        }
    $requestedEmail  = $_REQUEST['email'];
    isEmailExists($requestedEmail);

?>
  • 写回答

1条回答 默认 最新

  • dongzi1959 2015-05-12 08:45
    关注

    change the id of the email input to: user_email

    Edit: I made a fiddle: https://jsfiddle.net/66oxokta/ which seems to be working fine. What exactly doesn't work at your solution?

        user_email:{
            required: "this works",
            email: "this also works",
            remote: "didnt test this"
        },
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助