1

ユーザーが水平リストをダブルクリックすると、その要素が別のdivに移動する関数があります。この順序付けされていないリストのliタグの1つは、テキスト入力フィールドです。その特定のフィールドでのみダブルクリック動作を無効にしたいのですが。入力フィールドはul要素の一部であるため、そのテキストボックスがダブルクリックされたときにダブルクリックイベントが発生するのを防ぐ方法が見つからないようです。これが私が持っているものです。js2coffee.orgのおかげで、coffeescriptまたは通常のjavascriptで回答を受け入れます:)

次のコードは、水平のul要素を別のdivに移動し、ダブルクリックすると元の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>
4

3 に答える 3

2

コーヒースクリプトでそれを行う方法はわかりませんが、行う必要があります

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

または似たようなもの。

これは非コーヒースクリプトのバージョンです:

$(".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");
});

そして、これはコーヒースクリプトでどのように見えるかです

$(".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"
于 2012-10-03T18:32:58.670 に答える