2011-07-08 66 views
0

我有一个简单的表单,一个文本字段和一个提交按钮。点击提交后,我发出一个ajax请求,返回一些jquery执行。在这个jQuery中,我禁用了表单的提交按钮,并在文本字段更改时启用按钮。以下是我正在使用的代码:rails 3 + jquery启用提交按钮上的文本字段更改

$("#my_form input[type=submit]").attr("disabled","true"); 
$("#my_form #my_form_text").change(function() 
{ 
    $("#my_form input[type=submit]").removeAttr("disabled"); 
}); 

问题是我希望在更改文本字段后立即启用提交按钮。在更改文本字段并将光标移出文本字段之后,提交按钮处于启用状态。有没有一种方法提交按钮获得启用,只要我在文本字段中进行修改(即使我的光标仍然在文本字段中)?

谢谢。

回答

1

将文本字段绑定到keyup事件。每次按下某个键时,您都会知道文字正在改变。

http://api.jquery.com/keyup/

$('textfield').keyup(function() { 
    alert('text changed'); 
}); 
0

你可能想看看jQuery的keyup方法:http://api.jquery.com/keyup/

在事件处理程序,检查是否有任何实际的输入作为keyup事件的结果,而比如说,用户只按了删除键。

小心虽然:用户可能仍然使用鼠标复制和粘贴文本,两个事件都不会触发。

这样可以适应所有的情况下,我能想到的现在:

var changeHandler = function (e) { 
    if (this.value) $("input[type=submit]").removeAttr("disabled"); 
}; 
$("input[type=text]").keyup(
    changeHandler 
).change(
    changeHandler 
).mousemove(
    changeHandler 
); 

参见:http://jsfiddle.net/E86T9/

相关问题