2013-07-06 140 views
2

jQuery UI的對話形式:

我必須使用一個新的網站jQuery UI的對話框表單驗證

創建登記:

  1. jQuery UI的
  2. PHP
  3. MySQL的
  4. Html5

問題:

  1. 不能檢查,如果用戶或電子郵件存在。
  2. CHECK_EXIST函數返回的值辦法抹殺,它總是沒有定義
  3. 當是刪除,如果(BVALID & &辦法抹殺)的辦法抹殺它工作得很好
  4. 如果E郵件存在如何檢查關鍵了
  5. 如何禁用註冊按鈕,如果有任何錯誤

ajax.php文件來源:

require_once '../global.php'; 
if ($_GET['do'] == "register") { 
if (isset($_POST['name'])) { 
    $name = strip_tags($_POST['name']); 
    $pass = strip_tags($_POST['password']); 
    $ins = mysql_insert('users', array('u_name' => $name, 'password' => $pass)); 

    if ($ins) { 
     $u_id = mysql_insert_id(); 
     $username = strip_tags($_POST['username']); 
     $telephone = strip_tags($_POST['telephone']); 
     $gender = strip_tags($_POST['gender']); 
     $nationality = strip_tags($_POST['nationality']); 
     $email = strip_tags($_POST['email']); 

     $ins2 = mysql_insert('patient_info', 
     array(
     'u_no' => $u_id, 
     'name' => $username, 
     'gender' => $gender, 
     'nationality' => $nationality, 
     'tel' => $telephone, 
     'email' => $email 
     )); 
     if ($ins2) { 
      echo "Welcome you can login now :)"; 
     } 
    } 
} 
} 

if ($_GET['do'] == "userexist") { 
$username = $_POST['username']; 
$result = mysql_query("select * from users where u_name ='" . $username . "'"); 

$row = mysql_fetch_row($result); 
if ($row > 0) { 
    echo 1; 
}else{ 
    echo 0; 
} 
} 
if ($_GET['do'] == "mailexist") { 
$email = $_POST['email']; 
$result = mysql_query("select * from patient_info where email ='" . $email . "'"); 

$row = mysql_fetch_row($result); 
if ($row > 0) { 
    echo 1; 
}else{ 
    echo 0; 
} 
} 

js文件來源:

$(function() { 
$("#gender").buttonset(); 
var info = $('#notfi-info').hide(); 
$('#notfi-error').hide(); 
var name = $("#name"), email = $("#email"), password = $("#password"), username = $("#username"), telephone = $("#telephone"), gender = $('#gender input[name=gender]'), nationality = $("#nationality"), allFields = $([]).add(name).add(email).add(password).add(username).add(telephone).add(password).add(nationality), tips = $("#validateTips"); 

function getradio(r) { 
    if (r.filter(':checked')) { 
     if (r.filter(':checked').val() == "male" || r.filter(':checked').val() == "female") { 
      return r.filter(':checked'); 
     } 
    } else { 
     return false; 
    } 
} 

function updateTips(t) { 
    tips.text(t).addClass("ui-state-highlight"); 
    setTimeout(function() { 
     tips.removeClass("ui-state-highlight", 1500); 
    }, 500); 
} 

function checkLength(o, n, min, max) { 
    if (o.val().length > max || o.val().length < min) { 
     o.addClass("ui-state-error"); 
     updateTips("Length of " + n + " must be between " + min + " and " + max + "."); 
     return false; 
    } else { 
     return true; 
    } 
} 

function checkRegexp(o, regexp, n) { 
    if (!(regexp.test(o.val()))) { 
     o.addClass("ui-state-error"); 
     updateTips(n); 
     return false; 
    } else { 
     return true; 
    } 
} 

function check_exist(x, y, z, k) { 
    jQuery.ajax({ 
     type : "POST", 
     url : "inc/ajax.php?do=" + z, 
     data : y + '=' + x.val(), 
     cache : false, 
     success : function(response) { 
      if (response == "1") { 
       x.addClass("ui-state-error"); 
       updateTips(k); 
       return false; 
      } 
      if (response == "0") { 
       return true; 
      } 
     } 
    }); 
} 

function subregform(form) { 
    jQuery.ajax({ 
     type : form.attr("method"), 
     url : form.attr("action"), 
     data : form.serialize(), 
     success : function(msg) { 
      info.find(".info").text(msg); 
      info.toggle(); 
      $(this).dialog("close"); 
     }, 
     error : function() { 
      alert("failure"); 
     } 
    }); 
} 


$("#dialog-form").dialog({ 
    autoOpen : false, 
    height : 450, 
    width : 400, 
    modal : true, 
    buttons : { 
     "Create an account" : function() { 
      var bValid = true; 
      allFields.removeClass("ui-state-error"); 
      bValid = bValid && checkLength(name, "login name", 3, 16); 

      bValid = bValid && checkLength(email, "Email", 6, 80); 
      bValid = bValid && checkLength(password, "Password", 5, 16); 
      bValid = bValid && checkLength(username, "Username", 5, 16); 
      bValid = bValid && checkLength(telephone, "Telephone", 7, 13); 
      // bValid = bValid && checkLength(getradio, "Gender", 4, 5); 
      bValid = bValid && checkLength(nationality, "Nationality", 3, 25); 

      bValid = bValid && checkRegexp(telephone, /^[0-9]([0-9])+$/i, "Telephone may consist of 0-9 only."); 
      // bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter."); 
      // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ 
      bValid = bValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. [email protected]"); 
      // bValid = bValid && checkRegexp(password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9"); 

      var notexist = true; 

      notexist = notexist && check_exist(name, 'username', 'userexist', 'Login Name Already Exist!'); 
      notexist = notexist && check_exist(email, 'email', 'mailexist', 'E-Mail Already Exist!'); 
      if (bValid && notexist) { 
       var form = $('#dialog-form form'); 
       subregform(form); 

       // $("#users tbody").append("<tr>" + "<td>" + name.val() + "</td>" + "<td>" + email.val() + "</td>" + "<td>" + password.val() + "</td>" + "<td>" + username.val() + "</td>" + "<td>" + telephone.val() + "</td>" + "<td>" + gender.filter(':checked').val() + "</td>" + "<td>" + nationality.val() + "</td>" + "</tr>"); 
       $(this).dialog("close"); 
      } 

     }, 
     Cancel : function() { 
      $(this).dialog("close"); 

     } 
    }, 
    close : function() { 
     allFields.val("").removeClass("ui-state-error"); 
    } 
}); 

$("#create-user").button().click(function() { 
    $("#dialog-form").dialog("open"); 
}); 
}); 

回答

1

你不應該有=應該:,也使它的對象:

function check_exist(x, y, z, k) { 
jQuery.ajax({ 
    type : "POST", 
    url : "inc/ajax.php?do=" + z, 
    data : {y:x.val()}, 
    cache : false, 
    success : function(response) { 
     if (response == "1") { 
      x.addClass("ui-state-error"); 
      updateTips(k); 
      return false; 
     } 
     if (response == "0") { 
      return true; 
     } 
    } 
}); 

}

Als O和更容易的途徑將不包括在所有的$_GET變量,只是堅持if(isset($_POST[]))所以你的代碼會是這個樣子:]

url : "inc/ajax.php", 
    data : {do : z, y:x.val()}, 

if(isset($_POST['do'])){ 

    if($_POST['do']=="userexist") 
} 

無論哪種方式,我相信你的問題是與data的說法,但是,你的mysql語句可能存在另一個問題。讓我知道這種更改是否有效......如果沒有,請打開螢幕或檢查器,進入網絡選項卡,單擊按鈕以檢查用戶是否存在,然後查看服務器的響應。

+0

'數據:{做到:Z,Y:x.val()} ' 給我 DO = userexist&Y = ahmedfatehy 然後我嘗試這樣的: '數據:{ '做':Z,Y:x.val()}' 並返回DO = userexist&Y =艾哈邁德 然後我嘗試 '數據: '做=' + Z + '&' + Y + '=' + x.val(),' 其返回 DO = userexist與用戶名=約翰 其現在的工作,但是,主要的問題: 辦法抹殺不是真的 'var notexist = true; notexist = notexist && check_exist(name,'username','userexist','登錄名已存在!'); notexist = notexist && check_exist(email,'email','mailexist','電子郵件已經存在!'); if(bValid && notexist)' –

0

data :{do : z, y:x.val()} 給我 DO = userexist & Y = ahmedfatehy

然後我嘗試這樣的:

data : {'do' : z, y:x.val()},

,並返回做= userexist & Y =艾哈邁德

然後我嘗試 data :'do='+ z +'&'+ y +'='+ x.val(), 它返回 DO = userexist &用戶名=約翰

其現在的工作,但是,主要的問題: 沒有辦法抹殺真正

 var notexist = true; 

     notexist = notexist && check_exist(name, 'username', 'userexist', 'Login Name Already Exist!'); 
     notexist = notexist && check_exist(email, 'email', 'mailexist', 'E-Mail Already Exist!'); 
     if (bValid && notexist) ` 
+0

什麼是從服務器完全返回? –