2016-04-06 14 views
0

Ich finde einen Weg, um alle Textfelder in der Website akzeptieren nur römische Zeichen. Gibt es einen einfachen Weg, dies global zu tun?Erlaube nur römische Zeichen in Textfeldern

Vielen Dank im Voraus.

+2

Es wird erwartet, dass Sie zumindest versuchen, diese für sich selbst zu codieren. Stack Overflow ist kein Code-Schreibdienst. Ich würde vorschlagen, dass Sie zusätzliche Recherchen anstellen, entweder über Google oder indem Sie SO suchen, einen Versuch unternehmen und. Wenn Sie immer noch Probleme haben, kommen Sie zurück mit ** Ihrem Code ** und erklären Sie, was Sie versucht haben und warum es nicht funktioniert hat. –

+0

Was haben Sie versucht? – Zafta

+1

Siehe: [Überprüfung der lateinischen Zeichen] (http://stackoverflow.com/questions/15785508/latin-characters-check). Es ist nicht so einfach wie es scheint. – Roberto

Antwort

0

ich auf die markierte Antwort auf die folgende Frage für die regex beziehen, die filtert nicht-lateinischen Buchstaben:

How to detect non-roman characters in JS?

Spoiler: die Regex ist /[^\u0000-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF]/g

Alles was Sie jetzt brauchen, ist ein wenig mit jQuery Bastelei:

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

In modernen Browsern <input> akzeptiert ein Attribut namens pattern. Dies erlaubt, die gültigen Zeichen in einem gegebenen Feld einzuschränken.

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

Für alle anderen Browser Sie alle Formularfeld über jQuery finden können, überprüfen Sie, ob ein pattern -Attribut vorhanden ist, und überprüfen Sie es gegen den Wert eines bestimmten Feldes. Sie können auch nicht erlaubte Zeichen ersetzen:

$('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>

Oh, Sie noch Formulareingaben auf der Server-Seite überprüfen möchten. Alle HTML- oder Javascript-Inhalte verhindern nicht, dass alle Besucher Ihrer Website fehlerhafte Inhalte einreichen.

+0

Wenn ich das OP wäre, würde ich diese Antwort als die richtige markieren. – Renan

+1

Nicht wirklich eine Lösung, da dies den Benutzer nicht daran hindert, nicht-lateinische Zeichen wie "Сергей" (Sergei) einzugeben. Es hebt die Zeichen als ungültig hervor, aber es markiert auch viele legitime lateinische Zeichen (Polnisch, Spanisch, Italienisch usw.) als ungültig. Zum Beispiel, wie würde jemand einen deutschen Straßennamen eingeben, z. B. Straße – Roberto

+0

Sie haben völlig Recht, das akzeptiert nur römische Zeichen wie in ASCII. Wenn Sie mehr Zeichen benötigen, beziehen Sie sich auf die Lösung von @Renan – fboes

0

Fügen Sie diesen Code in Ihre Masterseite zum Beispiel:

<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

Tut dies Ihr Problem nicht lösen und warum? – tenbits

Verwandte Themen