2011-08-01 2 views
6

私はfocusoutイベントを持つテキストボックスを持っています。 テキストボックスがフォーカスを失うたびに(タブ、マウスがフォームの他の部分をクリックすると)、特定の条件に基づいて、アラートを無視するユーザー作成関数が呼び出されます。Jquery focus outイベント

私のフォームには、button clickイベントの代わりにtextBoxのbutton focusOutイベントをクリックしたときに、テキストボックスを埋めるとボタンがあります。

ボタンクリックで呼び出されるテキストボックスのfoucusoutイベントを停止するにはどうすればよいですか?

("$textbox").focusout(function(){ 
validation; 
alert("message"); 
}); 

("$btn").click(function(){ 
---- 
}); 

いずれかを教えてください。

+0

ID秒を持っている場合は、いくつかのより多くのコンテキストを提供することができ、次のようなセレクタは

$(".textbox").focusout(function(){ alert('MsgBox'); }); $(".btn").click(function(){ alert('Button'); }); 

変更(TextBoxclass="textbox"を持っており、Buttonclass='btn'を持っていると仮定して)?これがフォームの検証のためであれば、すべてのテキストボックスのフォーカスアウトを警告することは非常に不要です。フォーム提出の前に表示したいサマリーだけの場合は、これを達成するための他の(より良い)方法があります。 – Town

+0

これは、フォームの送信前にテキストボックスの通常の検証とは別に、何らかの追加の検証です。私は彼がクリックしたり、次のtexboxに移動したり、他のフィールドをクリックしている間、ユーザーにconfrimボックスを表示する必要があります。 –

答えて

0

focusoutイベントトリガーの後にボタンclickイベントが表示されますか。

おそらくalertがボタンclickの完了を妨げている可能性があります。

alertを削除して、両方のイベントがトリガーするかどうかをテストしてください。

更新:これはmousedownではなくclickがオンにトリガすることmouseupイベントに登録されますよう

たぶんmousedownイベントではなくclickで動作します。

+0

こんにちは、フォーカスアウト内のアラートは必須です。テキストボックスのフォーカスアウトイベントだけが呼び出されますが、ボタンのクリックイベントは呼び出されません。テキストボックスフォーカスアウトイベントがボタンクリックで呼び出されなくなるのを止めるチャンスがあります。 –

+0

問題は、 'focusout'がボタン' click'イベントの 'mousedown'で発生しますが、アラートによって停止されている可能性のある' mouseup'イベントが発生するまで、ボタンのクリックは起こらないことです。問題の原因であるかどうかを確認するために一時的に削除することを推奨します。 –

+0

私はマウスのダウンイベントで試しました、それはまだ私はフォーカスのアラートを得ることができます助けていない..私はこの警告が表示されたくありません。 –

8

私はマウスダウンにあなたのクリックイベントを変更しました(それは、最初に起動)し、あなたのクリックを追跡するために変数を使用:

var buttonClicked = false; 

$('#txt1').focusout(function(){ 
    if(!(buttonClicked)){ 
     alert('BlurEvent'); 
    }else{ 
     buttonClicked = false; 
    } 
}); 

$('#btn').mousedown(function(event){ 
    alert('ClickEvent'); 
    buttonClicked = true; 
}); 

http://jsfiddle.net/924SZ/

EDIT

var buttonClicked = false; 

$('#txt1').focusout(function(){ 
    if(!(buttonClicked)){ 
     // do normal focusout code. 
    }else{ 
     // button was clicked - dont execute some code. 
     buttonClicked = false; 
    } 
    //this always executes regardless of focusout or button click 
    var reply =confirm("Are you happy with the input?"); 
}); 

$('#btn').mousedown(function(event){ 

    buttonClicked = true; 
}); 
+0

こんにちは、あなたのコードに表示される場合、私はtxtboxに何かを入力し、最初にボタンをクリックしてフォーカスアウトアラートが呼び出され、イベントをクリックします。私が必要とするのはフォーカスアウトイベントですshudは全く呼び出されません。ボタンイベントだけが呼び出されます。 –

+0

私たちは 'mousedown'イベントを使用しているので、' mouseup'の後に起こる 'focusout'の前に最初に呼び出されます。変数を使って、 'focusout'関数を実行から除外します。すなわち、テキストボックスにフォーカスがあるときにボタンをクリックすると、 'alert( 'BlurEvent')'は起動しません。 – f0x

+0

私たちはまた、マウスでボタンをクリックする以外の何かをする能力を排除します... – Town

0

私は、JQueryセレクターが$で動作すると思います。だからあなたはここで唯一間違っているのは、間違って '$'ドル記号を置いているということです。

これはいかがですか。あなたの代わりにclass

$("#textbox") AND $("#btn") 

http://jsfiddle.net/dAa2R/6/

+0

問題は、フォーカスがまだOPsアプリケーションでポップアップを引き起こしている発射です。 – f0x

関連する問題