Javascript 如何在提交表单之前检查唯一用户名
我已经试了几个小时了。我想检查用户名是否已经存在于数据库中。如果有,请提醒并不要提交。如果没有,请提交。这是我的密码Javascript 如何在提交表单之前检查唯一用户名,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我已经试了几个小时了。我想检查用户名是否已经存在于数据库中。如果有,请提醒并不要提交。如果没有,请提交。这是我的密码 $(function() { $("#new_user").on("submit", function() { var anyFieldIsEmpty = $('.newuser_input').filter(function() { return $.trim(this.value).length == 0; }).length > 0;
$(function() {
$("#new_user").on("submit", function() {
var anyFieldIsEmpty = $('.newuser_input').filter(function() {
return $.trim(this.value).length == 0;
}).length > 0;
if (anyFieldIsEmpty) {
alert("There are empty fields!");
return false;
}
else {
check_curr_username();
return false;
}
});
});
function check_curr_username() {
var username = $("#user_username").val();
$.ajax({
"url": "/checkusername",
"data": {"name":username},
"type": "get",
"dataType": "json",
"success": function(data) {
alert('Username'+' '+data.username +' '+'is already taken' );
$("#user_username").focus();
return false;
},
"error": function() {
$("#new_user").submit();
return true;
}
});
}
这是一个Rails表单。只有当用户名已经存在时,代码才起作用。但是如果没有,那么表单就不会提交。我们需要checkusername页面,但我认为表单不会提交,因为没有触发错误(即:没有发生错误)。
checkusername页面应返回一个特定值。如果用户名尚未使用,则您可以处理表单。这就是我检查唯一用户名的方式。我可能会被否决,因为这不是Rails,而是PHP
<style>.nodisplay{display: none;}</style>
<form id="usersigningup" name="usersigningup" method="post" action="">
<input type='text' name='name' id='nose' pattern='[A-Za-z0-9_]{5,20}' required>
<input type='text' name='password' id='password' pattern='[A-Za-z0-9_]{5,20}' required>
<input class="nodisplay" type="submit" id="usersignup" name="usersignup" value="Go!"></form><br>
<span id='response'></span>
接下来,我使用mysqli查询
<?php include ('connect.php'); if( isset($_POST['ajax']) && isset($_POST['name']) ){
$un = $_POST['name'];
$sql51 = mysqli_query($conn, "SELECT username FROM mysite Where username = '$un'");
if (mysqli_num_rows($sql51) > 0) {
echo "<font color='red'>Sorry <b><i>" . $un . "</i></b> has been taken</font><script>document.getElementById('usersignup').style.display='none';</script>";
} else {
echo "<font color='green'><b>The Username <i>" . $un . "</i> is available</b></font><script>document.getElementById('usersignup').style.display='block';</script>";}
exit;}?>
您的问题是什么?您是否遇到了错误?只有当用户已经存在时,它才起作用。但是如果没有,那么表单就不会提交。你能显示checkusername
相关的操作和视图吗?我明白了。我没有注意到每次击键,因为我没有发送太多的服务器请求。
<?php include ('connect.php'); if( isset($_POST['ajax']) && isset($_POST['name']) ){
$un = $_POST['name'];
$sql51 = mysqli_query($conn, "SELECT username FROM mysite Where username = '$un'");
if (mysqli_num_rows($sql51) > 0) {
echo "<font color='red'>Sorry <b><i>" . $un . "</i></b> has been taken</font><script>document.getElementById('usersignup').style.display='none';</script>";
} else {
echo "<font color='green'><b>The Username <i>" . $un . "</i> is available</b></font><script>document.getElementById('usersignup').style.display='block';</script>";}
exit;}?>