Показать сообщение отдельно
  #18 (permalink)  
Старый 26.07.2012, 11:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от 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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 26.07.2012 в 12:08.
Ответить с цитированием