6
jQuery(document).ready(function() {
    jQuery(".multipleDataRow").on("click", "[id^='multiremove_']", function() { 
        //code here to delete
    });
});

「Enter」キーを押して削除機能が呼び出されないようにしたい

これは、他のテキストボックスにフォーカスし、キーを押してEnterボタンを押すと、クリック機能がトリガーされます。

削除ボタンは、クラス「multipleDataRow」を持つコンテナー内にあります。

削除機能は、他のフィールドで Enter キーを押すとトリガーし続けます。

編集:コメントからのHTML

<div class="multipleDataRow">
  <label class="">Skills</label>
  <div class="">
    <div id="" class="">
      <div id="multiRow_2_Skillset" class="mBtm-5 span8 mLft-0">
        <input type="text" placeholder=".." id="skill" name="skills[]" value="" class="m-wrap" readonly="readonly">
        <select name="data[tmp_experiences[]]" id="tmp_years_exp_2" class="m-wrap" disabled="disabled">
          <option value="1">1</option>
        </select> Yrs&nbsp;
      </div>
      <div id="spanMultiremove_Skillset_2" class="mBtm-5">
        <button id="multiremove_Skillset_2" skillset_skexp="59" class="btn mini red"> remove </button>
      </div>
    </div>
  </div> <!-- Missing in comment -->
</div> <!-- Missing in comment -->
4

4 に答える 4

6

Enterボタンにフォーカスがあるときにキーを押すとclick、ブラウザではイベントと同じように扱われます。

Rory が述べたように、これはすべてのブラウザの仕様による機能です。この機能を無効にすると、すべての標準機能が含まれないため、エンド ユーザーが最終結果に不満を抱く可能性があります。

これを無効にするには、 // をonkeydownチェックして、クリック イベントが発生する前にキーボード アクションが発生するかどうonkeyuponkeypressを確認し、キーが押された場合はクリック イベント コードの発生を停止します。

すなわち

var isKeyPress = false;

document.onkeydown = function(event) {
   if (event.keyCode == 13) {
      isKeyPress = true;
   }
}

jQuery(".multipleDataRow").on("click", "[id^='multiremove_']", function() { 
   if (!isKeyPress) {
      //code here to delete
   }
   isKeyPress = false;
});

isKeyPresstrue

于 2013-10-09T13:47:24.947 に答える