次のjQuery関数があります:
フォームを送信します
$(".content").delegate('.entryButton','click', function() { var form = $(this).closest("form"); var id = form.attr('id'); var text = form.find("textarea").val(); Sijax.request('add_entry', [id, text]);
//Prevent the form from being submitted (default HTML) return false; });
フォームを拡大して入力ボタンを表示
$("textarea").focus(function() { $(this).css('height', '80px'); var button = $(this).parent().next().children(); ボタン.css('visibility', 'visible'); button.css('height', '20px') });
テキストエリアを小さくし、ボタンを非表示にします
$("textarea").blur(function() { $(this).css('height', '30px'); var button = $(this).parent().next().children(); ボタン.css('高さ', '0px') });
これは、エントリを作成しようとすると発生します。
- フィールドをクリックすると (フォーカス イベント)、フィールドが大きくなり、入力ボタンが表示されます
- テキストを入力
- エントリ ボタンを初めてクリックします。ここで、blur イベントが発生し、フィールドが再び小さくなりますが、クリック イベントは発生しません。
- ボタンをもう一度クリックすると、フォームが送信されます
これは、blur イベントと click イベントが互いに干渉していることを意味していると思いますか?
ここで問題のフィドルを見つけることができます。フィールドにピントが合った状態でボタンを押すと、フィールドがぼやけますが、フィールドには入りません。フィールドがぼやけている状態でボタンを押すと、エントリが送信されます。
何か案は?