所以我一直在阅读教程:http://jqueryfordesigners.com/play-school-easy-ajax-load/(网站在BTW时似乎有点慢)
我尝试使用:
if(this.value.length > 0) {
但它似乎不起作用。 当我在输入论坛输入内容时,即使我按下说移位,它也会每次加载test1.php。 (这不是我想要的,我希望它只在我输入一个实际的字母或数字时才刷新)
我正在使用的主要JavaScript:
$(document).ready(function () {
$('#name').keyup(function () {
// if(this.value.length > 0) {
$('#results ul').load(
'test1.php #results li'
, { name : this.value }
);
// }
});
});
任何指针?
答案 0 :(得分:2)
$(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中测试)时才有效。
答案 1 :(得分:1)
您是否尝试过使用keypress
代替keydown
?只按下修改键时,按键不会触发。
$(document).ready( function() {
$('#name').keypress( function() {
$('#results ul').load('test1.php #results li', { name : $(this).val() } );
});
});
另请注意,我将其更改为使用jQuery来获取元素的值。如果您想要更多地控制哪些键触发AJAX调用,请使用事件参数并检查keyCode值。
$('#name').keypress( function(e) {
if ((e.keyCode >=48 && e.keyCode < 58) // numbers
|| (e.keyCode >= 65 && e.keyCode < 91) // uppercase
|| (e.keyCode >= 97 && e.keyCode < 123)) { // lowercase
...
}
});