我有一个网站,其中的日志输入是屏幕名称。在创建用户表单上,我希望能够通过ajax检查屏幕名称是否已存在,因为它已在表单中键入。
这是HTML表单输入字段
<label for="screenName">Screen Name:
<input type="text" class="form-control" name="screenName" id="screenName" size="28" required>
<div class="screenNameError"></div>
如果用户名与数据库匹配,则应在<div class="screenNameError"></div>
行显示一条消息。
这是我的Jquery代码。
$(document).ready(function(){
if ($('#screenName').length > 0){
var screenName = $("input").keyup(function(){
var value = $(this).val();
return value;
})
$.ajax({
type: 'post',
url: 'screenNameCheck.php',
data: 'Screen_Name=' + screenName,
success: function (r) {
$('.screenNameError').html(r);
}
})
}
});
这是调用以进行数据库查询的PHP文件
$screenName = $_POST['Screen_Name'];
$screenNameSQL = "SELECT Screen_Name FROM Users WHERE Screen_Name = '$screenName'";
$result = $my_dbhandle->query($screenNameSQL); //Query database
$numResults = $result->num_rows; //Count number of results
$resultCount = intval($numResults);
if($resultCount > 0){
echo "The username entered already exists. Please a different user name.";
}
由于某些原因,当我在表单中键入用户名时,我的Jquery没有触发:/
提前致谢
答案 0 :(得分:3)
尝试将jQuery更改为此 -
$(document).ready(function() {
$('#screenName').keyup(function() {
var value = $(this).val();
$.ajax({
type: 'post',
url: 'screenNameCheck.php',
data: 'Screen_Name=' + value,
success: function(r) {
$('.screenNameError').html(r);
}
});
});
});
但是,您可能希望尽量减少正在进行的ajax请求的数量,因此我建议将您的ajax请求放入setTimeout
功能,并在每次后续按键时清除它。 -
$(document).ready(function() {
var ajaxRequest;
$('#screenName').keyup(function() {
var value = $(this).val();
clearTimeout(ajaxRequest);
ajaxRequest = setTimeout(function(sn) {
$.ajax({
type: 'post',
url: 'screenNameCheck.php',
data: 'Screen_Name=' + value,
success: function(r) {
$('.screenNameError').html(r);
}
});
}, 500, value);
});
});
答案 1 :(得分:1)
在keyup上添加一个事件,如下所示:
修改强>
$("#screenName").on("keyup",function(){
var screenName=$(this).val();
if(screenName!='')
{
$.ajax({
type: 'post',
url: 'screenNameCheck.php',
data: 'Screen_Name=' + screenName,
success: function (r) {
$('.screenNameError').html(r);
}
})
}
});
答案 2 :(得分:1)
if ($('#screenName').length > 0){
您应该使用
进行更改if ($('#screenName').val().length > 0){
OR
var name = $('#screenName').val();
if(name.length >0) {...
不确定语法......
答案 3 :(得分:0)
你的ajax调用应该在keyup处理程序中。