繁体   English   中英

使用ajax检查文本输入字段的值

[英]Check the value of a text input field with ajax

我有一个网站,登录名是屏幕名称。 在创建用户表单上,我希望能够通过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无法触发

提前致谢

尝试将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);
  });
});

在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);
        }
    })
}
});

JsFiddle

if ($('#screenName').length > 0){

你应该用

if ($('#screenName').val().length > 0){

要么

var name = $('#screenName').val();
if(name.length >0) {...

不确定语法...

您的ajax调用应该在keyup处理程序中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM