2016-02-24 23 views
5

。タブレット、スマートフォンでも - しかし、テキストエリアについては、これは動作しません。モバイル(テキストエリア)にプレスを入力して検出できません

最後のクロム更新がほとんど行われていないため、問題になりました。

携帯からEnterキーを押すと、改行 "\ n"が表示されますが、機能は実行されません。

最新のクロムバージョンのモバイルデバイスでテキストエリアの入力を検出するにはどうすればよいですか?

答えて

1

それはクローム特定のバグかもしれないが、それらはいくつか可能 soloutionsされる可能性がありますだけでなくe.whichため

  1. がチェック:

    var key = e.which || e.keyCode || 0; 
    if (key == 13) { 
        // do something 
    } 
    
  2. は異なるイベントを試してみてください。例えばあなたがkeyUpを使用している場合には、まだあなたはそのための回避策が必要になる場合があります動作しない場合は検出が重要である場合、keyPress


を試してみてください。値を追跡し、inputイベントを使用して "\ n"がテキストエリアに追加されると検出できます。私はアンドロイドのキーボード(またはそれは、確かクロムのせいではありません)「キーの押下、KeyDownイベント」イベントたびに「押して」それを放出していないことが分かったので

var textarea = document.getElementById('your-textarea'); 
var textareaValue = textarea.value; 
var textareaLines = getLines(textareaValue); 

function getLines(str) { 
    // This uses RegEx to match new lines. 
    // We use || [] because it would otherwise fail if there weren't 
    // any line breaks yet. 

    return (str.match(/[\n\r]/g) || []).length; 
} 

textarea.addEventListener('input', function() { 
    var newValue = textarea.value; 
    var newLines = getLines(newValue); 

    if (newLines > textareaLines 
     && newValue.length == textareaValue.length + 1) { 

     // We also check that the new length is only one 
     // character longer to not fire this new line event 
     // after a copy-paste with a new line character. 

     doSomething(); 
    } 

    textareaValue = newValue; 
    textareaLines = newLines; 
}, false); 
+1

あなたの可能な解決策は、有用ではなかったです。時々 "e.keyCode == 229"を得ることができますが、これは別の話です。 値処理のトリックは、私が考えていたコードを投稿していただきありがとうございます) –

関連する問題