2017-03-10 12 views
2

ユーザがコンマ、ダッシュ、またはEnterキーを押すと、置き換えられるテキストエリアにスペースが表示されます。カンマ、ダッシュ、Enterキーを空白のテキストエリアに置き換えてください。

このコードは、Enterキーでのみ機能します。

$("#site_name").on("keypress",function(e) { 
 
     var key = e.keyCode; 
 
     if ((key == 188)||(key == 13)||(key == 173)||(key == 191)) { 
 
      document.getElementById("site_name").value=document.getElementById("site_name").value + " "; 
 
      return false; 
 
     } else { 
 
      return true; 
 
     } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<textarea name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

答えて

0

whichへ。​​と keypressは、異なる機能にマップするときに異なる結果をもたらします。コンマ= 188、ダッシュ= 189、入力= 13

$("#site_name").on("keydown",function(e) { 
 
    var key = e.keyCode; 
 
    console.log("keycode: " + key); 
 
    if ((key == 189)||(key == 188)||(key == 13)||(key == 173)||(key == 191))    
 
    {  
 
     document.getElementById("site_name").value=document.getElementById("site_name").value + " "; 
 
     return false; 
 
    } 
 
    else 
 
    { 
 
     return true; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

+0

@HristiyanDodov彼は彼の質問*カンマまたはダッシュで期間を言及しなかったか、テキストエリアに入力* –

+0

うん、悪い、申し訳ありません。 –

+0

あなたの答えをありがとう。あなたの答えは私のために働いています:)))) – aynaz

0

これは正規表現を使用しています。 keypressイベントをkeyupに置き換えました。keypressが有効になってからの前には、の前にカンマ/ダッシュ/改行をすぐに削除することはできません。実際にこの動作が必要な場合は、keypressに戻すことができます。

$("#site_name").on("keyup", function() { 
 
    $(this).val($(this).val().replace(/[\,\-\n]/g, " ")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea name="site_name" id="site_name" style="width: 100%;" rows="3"></textarea>

/[\,\-\n]/ggグローバルフラグが使用されることを示します。 すべての文字を置き換える必要があります。このフラグが使用されず、カンマとダッシュの束をコピー・ペーストすると、最初のものだけが置き換えられます。 regex hereの詳細

0

あなたは、単に変更することができkeyCodeあなたは私が​​イベントを使用することをお勧めしJavaScriptイベントを引き続き使用する場合var key = e.which;

+0

どのようにこの問題を解決しないと? – miken32

+1

@ miken32彼は 'keypress'を使用しています。これは、' which'が文字値を返すほとんどのキーに '0'を返します。 – cmorrissey

+0

ここにキープレスをテストするための素晴らしいサイトとなぜ '.which'を使うべきですかhttp://www.west-wind.com/westwindwebtoolkit/samples/ajax/html5andcss3/keycodechecker.aspx – cmorrissey

0

代わり45 & 44キーコード試してみてください。

$("#site_name").on("keypress",function(e) { 
 
    var key = e.keyCode; 
 
    console.log(key); 
 
    if ((key == 45)||(key == 13)||(key == 44)||(key == 191)) { 
 
     document.getElementById("site_name").value=document.getElementById("site_name").value + " "; 
 

 
     return false; 
 
    } else { 
 
     return true; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea name="site_name" id="site_name" style="width: 100%;" rows="3"> </textarea>

関連する問題