2012-10-03 87 views
1

時禁用雙擊我有一個功能,當用戶雙擊一個水平列表,該元素被移動到另一個DIV。這個無序列表中的一個li標籤是一個文本輸入字段。我想禁用該特定字段上的雙擊行爲。由於輸入字段UI元素的一部分,我似乎無法找到一種方法來防止雙擊事件從當文本框被雙擊射擊。這是我的。我接受的CoffeeScript或常規的JavaScript感謝答案js2coffee.org :)jQuery的懸停選擇

以下代碼移動水平UI元素到另一個DIV並回到原來的兩倍,如果點擊了兩次。很棒。懸停在輸入字段上時,如何暫時禁用它。

$(".available_product_shipments").on "dblclick", ".product", -> 
    $(this).appendTo ".product_shipments" 
$(".product_shipments").on "dblclick", ".product", -> 
    $(this).appendTo ".available_product_shipments" 

而且JS相當於:

$(".available_product_shipments").on("dblclick", ".product", function() { 
    $(this).appendTo(".product_shipments"); 
}); 

$(".product_shipments").on("dblclick", ".product", function() { 
    $(this).appendTo(".available_product_shipments"); 
}); 

的HTML的結構是這樣

<ul> 
    <li class="product"> 
    <ul> 
     <li class="avail_qty_field"><input type="text /></li> #Prevent dblclick here 
     <li>...</li> 
     <li>...</li> 
    </ul> 
    </li> 
    <li class="product"> 
    <ul> 
     <li class="avail_qty_field"><input type="text /></li> #Prevent dblclick here 
     <li>...</li> 
     <li>...</li> 
    </ul> 
    </li> 
</ul> 
+0

我不知道如何做到這一點的咖啡腳本,但你只需要做'如果($(event.target).is(「input」))return;'或類似的東西。 –

+0

@KevinB:發佈那個答案。 – Blender

回答

2

我不知道該怎麼做,在咖啡的腳本,但你只需要做

if ($(event.target).is("input")) return; 

或某些類似。

這是不coffescript版本:

$(".available_product_shipments").on("dblclick", ".product", function(e) { 
    if ($(e.target).is("input")) return; 
    $(this).appendTo(".product_shipments"); 
}); 

$(".product_shipments").on("dblclick", ".product", function(e) { 
    if ($(e.target).is("input")) return; 
    $(this).appendTo(".available_product_shipments"); 
}); 

而這正是它看起來像在CoffeeScript中

$(".available_product_shipments").on "dblclick", ".product", (e) -> 
    return if $(e.target).is("input") 
    $(this).appendTo ".product_shipments" 

$(".product_shipments").on "dblclick", ".product", (e) -> 
    return if $(e.target).is("input") 
    $(this).appendTo ".available_product_shipments" 
+0

既然你先回答我給你信用。不知道爲什麼堆棧溢出將您的答案放在底部。 – ctilley79

+0

這是一個在底部,因爲它更有意義,首先顯示最新的答案,否則你可能不會注意到新的答案或修改的答案。您可以通過點擊頂部的「最舊」而不是「有效」來更改。 –

+0

@ ctilley79出於好奇,你會如何了'e'參數添加到使用的CoffeeScript匿名函數? –

2

試試這個

$(".available_product_shipments").on("dblclick", ".product", function(e) { 
    if($(e.target.localName === 'input')) return; 
    $(this).appendTo(".product_shipments"); 
}); 

$(".product_shipments").on("dblclick", ".product", function(e) { 
    if($(e.target.localName === 'input')) return; 
    $(this).appendTo(".available_product_shipments"); 
}); 

編輯:糾正語法

Raf。
0

Ra療法比它發生後過濾的情況下,我使用「not selector」過濾器過濾會出來。從下面的例子中,我沒有在輸入類型的「文本」上掛鉤事件,而是在「密碼」類型上。

HTML

​​

咖啡

$(".collection").on "dblclick", ".product:not('input[type=text]')", -> 
    alert "double clicked" 

的jsfiddle 看到它在這裏的行動:http://jsfiddle.net/anAgent/wQsss/