2016-04-06 4 views
0

ウェブサイト内のすべてのテキストボックスにローマ字しか使用できないようにする方法を探しています。それをグローバルに行う簡単な方法はありますか?テキストフィールドにローマ字のみを許可する

ありがとうございます。

+2

あなたが、少なくとも自分のためにこれをコーディングすることを試みることが期待されます。スタックオーバーフローはコードを書くサービスではありません。私はあなたがGoogleを介して、またはSOを検索することによって、いくつかの追加の研究を行い、試してみることを提案します。それでも問題が解決しない場合は、**あなたのコード**に戻って、あなたが試したこととそれがうまくいかなかった理由を説明してください。 –

+0

何を試しましたか – Zafta

+1

参照:[Latin Characters check](http://stackoverflow.com/questions/15785508/latin-characters-check)それは見えるほど単純ではありません。 – Roberto

答えて

0

私は非ローマ字をフィルタリングする正規表現のために、次の質問のためにマークされた答えを参照します:

How to detect non-roman characters in JS?

スポイラー:正規表現が/[^\u0000-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF]/g

今、あなたが必要とするすべてであるですjQueryをいじりの少し:最近のブラウザで

var myInputId = "#foo"; // Or whatever you wish to use. 
var input = $(myInputId); 
var exp = /[^\u0000-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF]/g; 
input.blur(function() { 
    input.value = input.value.replace(exp, ""); 
}); 
1

受け入れ<input>属性はpatternとなります。これにより、指定されたフィールド内の有効な文字を制限することができます。他のすべてのブラウザのために

input:invalid { 
 
    background-color:red; 
 
}
<form> 
 
    <input type="text" pattern="[a-zA-Z\s\.\-_]+" /> 
 
    <button type="submit">Submit</button> 
 
</form>

あなたは、jQueryを介して、すべてのフォームフィールドを見つけるpattern -attributeが存在するかどうかを確認し、指定したフィールドの値に対してそれを確認することができます。あなたはまた、許可されていない文字を置き換えることがあります。

$('form').on('keyup blur','input',function() { 
 
    if ($(this).val() && $(this).attr('pattern')) { 
 
    //var pattern = new RegExp('^'+$(this).attr('pattern')+'$', 'g'); 
 
    //$(this).toggleClass('invalid', pattern.match(!$(this).val())); 
 
    var pattern = new RegExp($(this).attr('pattern').replace(/\[/,'[^'), 'g'); 
 
    $(this).val($(this).val().replace(pattern,'')); 
 
    } 
 
});
input:invalid, 
 
input:invalid { 
 
    background-color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<form> 
 
    <input type="text" pattern="[a-zA-Z\s\.\-_]+" /> 
 
    <button type="submit">Submit</button> 
 
</form>

をああ、あなたはまだ、サーバー側でフォーム入力を検証します。すべてのHTMLやJavascriptなどは、サイトのすべての訪問者が壊れたものを送信することを妨げるものではありません。

+0

私がOPだった場合、この回答を正しいものとしてマークします。 – Renan

+1

実際には解決策ではありませんが、ユーザーが実際に "Сергей"(Sergei)のような非ラテン文字を入力するのを妨げることはありません。文字を無効として強調表示しますが、ポーランド語、スペイン語、イタリア語などの多くの正当なラテン文字も無効とマークします。たとえば、誰かがドイツの通り名を入力する方法(例:straße – Roberto

+0

)あなたは完全に正しいです。これはASCIIのようにローマ字しか受け入れません。さらに多くの文字が必要な場合は@Renanの解決策を参照してください – fboes

0

は、例えば、あなたのマスターページにこのスニペットを含める:

<script> 
    $(function(){ 
     $('input[type=text],textarea').keypress(function(e){ 
      var char = String.fromCharCode(e.which || e.charCode); 
      var rgx = /[\u0000-\u007F]/; 
      if (rgx.test(char) == false) 
       return false; 
      }) 
    }) 
</script> 
+0

これはあなたの問題を解決していないのですか? – tenbits

関連する問題