Сообщение от Demath
|
Нужно, чтобы сразу после русской буквы нельзя было ввести ничего, кроме тоже русской буквы или пробела, или знака препинания.
|
<input id="inp" type="text" value="Test text now прИвет мир" style="width: 100%;" />
<script>
document.getElementById('inp').onkeypress = function( e ) {
e = e || window.event;
var self = e.target || e.srcElement,
caretPos = 0;
if ( e.which == null ) {
e.which = e.charCode != null ? e.charCode : e.keyCode;
}
if ( e.which == 32 || e.which == 9 || e.which == 8 || e.which == 0 &&
/[\x21\x22\x23\x24\x25\x26\x27\x28\x2E]/.test( String.fromCharCode( e.keyCode ) ) ) {
return;
}
if ( document.selection ) {
self.focus();
var sel = document.selection.createRange();
sel.moveStart( 'character', -self.value.length );
caretPos = sel.text.length;
} else if ( self.selectionStart || self.selectionStart == '0' ) {
caretPos = self.selectionStart;
}
var wordStart = self.value.lastIndexOf( " ", caretPos - 1 ) + 1,
wordEnd = self.value.indexOf( " ", caretPos );
wordEnd = ( wordEnd == -1 ? self.value.length : wordEnd ) - wordStart;
// это наше слово над которым находится курсор
var word = self.value.substr( wordStart, wordEnd ).replace( /^\s+|\s+$/g, '');
var isLatin = !/[а-яё]/i.test( String.fromCharCode( e.keyCode ) );
var isSymbol = !isLatin || /[a-zA-Z]/.test( String.fromCharCode( e.keyCode ) );
return !word || !isSymbol || ( /[а-яё]+/i.test( word ) ? !isLatin : isLatin );
}
</script>