javascript - 如果输入大于0并且是字母键,如何仅执行jquery代码?

标签 javascript jquery

所以我一直在阅读以下教程:http://jqueryfordesigners.com/play-school-easy-ajax-load/ (顺便说一句,网站目前似乎有点慢)

我尝试过使用:

if(this.value.length > 0) {

但是好像不行。 当我在输入论坛中输入内容时,即使我只是按shift键,它每次都会加载test1.php。 (这不是我想要的,我希望它仅在我输入实际字母或数字时刷新)

我正在使用的主要 JavaScript:

$(document).ready(function () {
    $('#name').keyup(function () {
      // if(this.value.length > 0) {
        $('#results ul').load(
            'test1.php #results li'
          , { name : this.value }
        );
      // }
    });
});

有什么指点吗?

最佳答案

$(document).ready(function () {
  $('#name').keyup(function () {
    // console.log(this.value);
    if(this.value.length > 0) {  
      $('#results ul').load('test1.php #results li', { name : this.value });
    }
   });
});

应该可以。尝试在各处添加一些 alert("test"); 并查看它们何时弹出。或者使用 firebug 单步执行代码。

<小时/>

编辑

您似乎希望它仅在按下实际字符键时加载页面。有多种方法可以做到这一点,但最简单的方法可能是将框的值与前一个值(即按下按键之前的值)进行比较:

$(document).ready(function () {
  $('#name').keyup(function () {
    if(this.value != $(this).attr("data-old-value") && this.value.length > 0) {  
      $(this).attr("data-old-value", this.value);
      $('#results ul').load('test1.php #results li', { name : this.value });
    }
   });
});

这仅在您使用 keyup 时才有效(在 Firefox 中测试)。

关于javascript - 如果输入大于0并且是字母键,如何仅执行jquery代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963321/

相关文章:

javascript - ajax成功时过滤json的Key值

javascript - 美化或着色网页上的 html 以提高可读性

javascript - CSS Transitions 不过渡

jquery-ui - 删除自动完成错误的微调器/加载图像

javascript - 什么对性能更好 : Update specific cells or replace entire table?

javascript - 保存用户之前的搜索查询

javascript - 了解 Bootstrap 轮播代码

javascript - 无法让 socket.io 在服务器上工作,同时在本地运行良好

javascript - 如何实现长时间的网页加载?

jquery - 使图像在悬停时缓出