2012-02-24 72 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

相关问题