2010-12-12 3 views
1

私は#statusというフォームを持っています。 #statusUpdateというフォーム入力に注目し、送信ボタン#submitStatusが表示されるようにしたいと思います。私はこれやってきましたjQuery:フォーカスとぼかし

$("#statusUpdate").focus(function(){ 
    $("#submitStatus").show(); 
}); 

$("#statusUpdate").blur(function(){ 
    $("#submitStatus").hide(); 
}); 

これは正常に動作しますが、今#submitStatusが表示されたときに私の問題があり、そしてあなたがそれをクリックします#statusUpdateので、それは、同じsplitsecondに消えますフォーカスが失われ(ぼやけて)、それが隠れる。

どのようにこれを修正できますか?

答えて

2

奇数設計;) あなたは私が右のあなたを理解していれば、あなたが探しているこの

setTimeout(function() { $("#submitStatus").hide(); }, 100) 

または使用jQueryのdelayhide()にいくつかのparamを追加する必要があります)

0

ようsetTimeouthideをラップすることができますサブミットボタンを隠し、サブミットボタンを表示したい場合は、ステータスアップデートに焦点を当てます。スニペットで何をしているかは、ステータス更新ボックスにフォーカスがある限り、サブミットボタンが表示されますが、クリックしようとするとフォーカスが失われ、すぐにサブミットボタンが非表示になります。これは望ましい結果ではありません。上記の答えは良いと思うし、あなたが必要なボタンをクリックするのに十分な時間を持つことができます。合計のスニペットは

$("#statusUpdate").focus(function(){ 
    $("#submitStatus").show(); 
}); 

$("#statusUpdate").blur(function(){ 
    setTimeout(function() { $("#submitStatus").hide(); }, 600); 
}); 

です。ユーザーがやりとりするためには600msくらいの間違いがあります。

関連する問題