-1

左矢印と右矢印でページを変更するjsスクリプトがありますが、特定のテキストエリアが選択されている場合にそれを停止するにはどうすればよいですか?

これは、ページを変更するための私のjsです

$(document).keydown(function(event) {

    if(event.keyCode === 37) {
          window.location = "http://site.com/pics/5";
    }    
    else if(event.keyCode === 39) {
          window.location = "http://site.com/pics/7";
    }
});
4

4 に答える 4

2
$('textarea').on('keypress', function(evt) {
  if ((evt.keyCode === 37) || (evt.keyCode === 39)) {
     console.log('stop propagation');
     evt.stopPropagation();
  }
});

フィドルの例を参照してください: http://jsfiddle.net/GUDqV/1

更新:OPの明確化後、これはChromeのjQuery 1.2.6でも機能します:http://jsfiddle.net/GUDqV/2/

$('textarea').bind('keyup', function(evt) {
  if ((evt.keyCode === 37) || (evt.keyCode === 39)) {
     console.log('stop propagation');
     evt.stopPropagation();
  } 
});​

Chrome と jQ1.2.6 でこのコードのスクリーンショットを参照してください。Chrome と jQ1.2.6 の最新コード

于 2012-04-27T08:17:09.727 に答える
0

次のようにして、テキストエリアがフォーカスされているかどうかを確認できます。

if (document.activeElement == myTextArea) {
  // Don't change the page
}
于 2012-04-27T08:13:18.890 に答える
0

おそらく最も簡単な方法はevent.target、コードを考慮して、それがテキストエリアかどうかを確認することです。

$(document).keydown(function(event) {
    if (event.target.id == "myTextArea") {
        return true;
    }
    else if(event.keyCode === 37) {
        window.location = "http://site.com/pics/5";
    }    
    else if(event.keyCode === 39) {
        window.location = "http://site.com/pics/7";
    }
});

myTextAreatextareaの ID を持つ要素から発生したキー イベントはすべて無視されます。

于 2012-04-27T10:47:13.353 に答える
0

$("#mytextarea").is(":focus") This will let you know if the element is focused. Also $(document.activeElement) will get the currently focused element. You can check to see if your text area is focused, and disable the script that navigates when using left and right arrow keys. A little bit of code showing what you've tried might bring in more specific responses. Hope this helps.

于 2012-04-27T08:17:05.850 に答える