我在一个简单的表单上使用此代码.请告诉我为什么这段代码有效
$(document).ready(function(){
$(":input").focus(function() {
$(this).keyup(function(){
if (this.value != this.lastValue) {
$.post("ajax-validation.php", { "username" : $(this).val() },
function(data){
$("#display").html(data);
});
this.lastValue = this.value;
};
});
});
});
Run Code Online (Sandbox Code Playgroud)
这不是吗?
$(document).ready(function(){
$(":input").focus(function() {
$(this).keyup(function(){
if (this.value != this.lastValue) {
$.post("ajax-validation.php", { $(this).attr("name") : $(this).val() },
function(data){
$("#display").html(data);
});
this.lastValue = this.value;
};
});
});
});
Run Code Online (Sandbox Code Playgroud)
这是一个非常奇怪的事情!
不是.$(this)没有你说的上下文.您需要缓存它并重用它.像这样:
$(document).ready(function() {
$(":input").focus(function() {
$(this).keyup(function() {
var el = $(this), theName = el.attr("name"), data = {};
data[theName] = el.val();
if (this.value != this.lastValue) {
$.post("ajax-validation.php", data , function(data) {
$("#display").html(data);
});
//console.log(el.attr("name"), el.val());
this.lastValue = this.value;
};
});
});
});
Run Code Online (Sandbox Code Playgroud)
代码更正了!似乎不允许使用方法(即使它返回一个字符串).所以我把它放在另一个变量中并在那里使用它.经过测试和工作.(使用开发工具或firebug查看请求)
代码更正了!再次!它看起来好像$.post不喜欢变量(它将它们视为字符串),所以我在$.post方法之外定义数据对象,并将其传入.像魅力一样工作.
代码是正确的但不健壮,这意味着,它将完全按照您在答案中的要求工作,但它可能会,并且在发生攻击时会以无尽的请求阻塞您的服务器.你应该:
setTimeout用于限制请求(仅在3-4秒后不进行编辑).您应该(在我看来)有一个验证按钮(或链接,或其他)来检查输入是否有效,而不是在按键上自动验证.
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |