2012-02-24 104 views
0

我有一個名爲showHide()的函數,當另一個按鈕(button1)被點擊時,交替地顯示和隱藏文本輸入字段和一個按鈕(button2)。文本輸入字段在打開時會自動對焦,這很有用。測試在運行element.blur函數之前是否點擊按鈕()

的HTML看起來大致從而:

<button1>Show/Hide</button> 
<form> 
    <input class="hidden" type="text" /> 
    <button2 type="submit">Submit</button> 
</form> 

<script type="text/javascript"> 
    $("button1.someSelectors").click(function() {showHide();}); 
    $("input.someSelectors").blur(function() {showHide();}) 
</script> 

我想延長功能,使得當所述輸入字段失去焦點它和button1的消失,除非失去焦點,因爲被點擊按鈕1被。現在它讀取我只測試輸入字段是否有焦點。我怎樣才能檢查button2是否被點擊?

我想:

$("input.someSelectors").blur(function() { 
    if (!$("button2.someSelectors").is(":focus")) { 
    showHide(); 
    } 
}); 

,但它甚至躲到了表單元素,當我試圖點擊按鈕2。

另一種方法是,以測試是否被點擊或不BUTTON2在功能的「隱藏」的一部分,但是當我加入

if(!$("button2.someSelectors").click()) {do the hide part of the function} 

來顯示隱藏(),當我點擊的形式得到提交button1 button2。這是我的問題example。誰能幫忙?

- 編輯:

var showHide=function(item, category) { 
    if($("input."+item+"."+category).hasClass("hidden")) { 
    $("input."+item+"."+category).show("fast").focus().removeClass("hidden"); 
    $("button.buy."+item+"."+category).show("fast"); 
    $("button.purchase."+item+"."+category).text("Never mind!"); 
    } else { 
    $("input."+item).hide("fast").addClass("hidden"); 
    $("button.buy."+item).hide("fast"); 
    $("button.purchase."+item).text("Purchase"); 
    } 
} 

回答

1

blurtextbox事件按鈕上的click事件觸發之前觸發。爲了避免您可以使用mousedown事件而不是click事件,該事件將在click事件之前觸發。試試這個

$("button1.someSelectors").mousedown(function() {showHide();}); 
$("input.someSelectors").blur(function() {showHide();}) 
+1

鼠標按下=點擊 - >含義點擊=(鼠標按下按鈕,按鈕和MouseUp的鼠標移出) – 2012-02-24 21:44:07

+0

這將導致表單字段出現並立即消失!在input.focus()被showHide()函數應用之前,input.blur()可能正在被測試嗎? – Kyle 2012-02-24 21:50:39

+0

你可以顯示'showHide'代碼嗎? – ShankarSangoli 2012-02-24 21:51:57

相關問題