2012-10-03 57 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/