jQuery Validator插件 – 检查mysql数据库中的现有用户名/电子邮件

我已成功创建了一个表单,提交并将用户添加到mysql数据库,并使用’jQuery Validator’插件进行表单validation,除了检查用户名是否已存在于数据库中之外,一切都很好…

我花了大约8个小时阅读并试图找到一种方法来使用’jQuery Validator’插件定义一个新方法。 我似乎无法理解如何检查数据库中输入的用户名或电子邮件,并返回它是否已经存在或使用jQuery。

我的代码:

     jQuery.validator.addMethod("checkExists", function(value, element) { //No idea what to call here }, "Username already exists." ); //<![CDATA[ $(window).load(function(){ $("form").validate({ rules: { username: {minlength: 3, required: true, checkExists: true}, email: {email: true, required: true}, pass1: {minlength: 3, required: true}, pass2: {minlength: 3, required: true, equalTo: "#pass1"}, country: {required: true}, tandc: {required: true}, }, messages: { username: {required: "You need to enter a Username."}, email: {required: "You need to enter an Email Address."}, pass1: {required: "You need to enter a Password."}, pass2: {required: "You need to enter your password again.", equalTo: "Your passwords don't match."}, country: {required: "You need to tell us where you live."}, tandc: {required: "You need to read and agree to the Terms and Conditions to use CGE."} }, showErrors: function(errorMap, errorList) { $.each(this.successList, function(index, value) { return $(value).popover("hide"); }); return $.each(errorList, function(index, value) { var _popover; console.log(value.message); _popover = $(value.element).popover({ trigger: "manual", placement: "right", content: value.message, template: "

" }); _popover.data("popover").options.content = value.message; return $(value.element).popover("show"); }); } }); });//]]>

如果有人聪明可以请修改我的代码,告诉我应该怎么做,这将是一个很大的帮助 – 我觉得我要疯了!

在此先感谢,迫不及待地想看到解决方案:-)


编辑 – 这是我目前的代码

似乎没有任何事情发生,我觉得我离我更近了:

当前代码:

signup.php

  $(window).load(function(){ $("form").validate({ rules: { username: {minlength: 3, required: true}, email: {email: true, required: true, remote: {url: "./validation/checkUnameEmail.php", type : "post"}}, pass1: {minlength: 3, required: true}, pass2: {minlength: 3, required: true, equalTo: "#pass1"}, country: {required: true}, tandc: {required: true} }, 

checkUnameEmail.php

  

* db_conx.php *

  

 $.validator.addMethod("checkExists", function(value, element) { var inputElem = $('#register-form :input[name="email"]'), data = { "emails" : inputElem.val() }, eReport = ''; //error report $.ajax( { type: "POST", url: validateEmail.php, dataType: "json", data: data, success: function(returnData) { if (returnData!== 'true') { return '

This email address is already registered.

'; } else { return true; } }, error: function(xhr, textStatus, errorThrown) { alert('ajax loading error... ... '+url + query); return false; } }); }, '');

要么

您可以使用远程方法来进行远程检查: http : //docs.jquery.com/Plugins/Validation/Methods/remote

例如。

  $("#yourFormId").validate({ rules: { email: { required: true, email: true, remote: { url: "checkUnameEmail.php", type: "post" } } }, messages: { email: { required: "Please Enter Email!", email: "This is not a valid email!", remote: "Email already in use!" } } }); 

checkUnameEmail.php //例如。

   

js代码

 username: { required: true, minlength: 5, remote: '/userExists' }, 

Php代码检查是否存在并返回消息

 public function userExists() { $user = User::all()->lists('username'); if (in_array(Input::get('username'), $user)) { return Response::json(Input::get('username').' is already taken'); } else { return Response::json(Input::get('username').' Username is available'); } }