2011-07-08 8 views
0

私はテキストフィールドと送信ボタンが1つのシンプルなフォームを持っています。 submitをクリックすると、jqueryを返すajaxリクエストを実行します。この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方法を見てとることをお勧めします:むしろkeyup事象の結果として、実際の入力があったかどうかを確認し、イベントハンドラでhttp://api.jquery.com/keyup/

を例えば、ユーザが削除キーを押下しただけである。

注意:ユーザーはマウスを使用してテキストをコピーして貼り付けることもできますが、2つのイベントのいずれも発生しません。

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/

これは私が今考えることができるすべてのケースを収納します