Как изменить символы, введенные в Firefox

Я извиняюсь. Я нашел sulution. Это было в webpack / babel-loader. Потому что я включил каталог src, и мой компонент Word находился вне src

6
задан Ates Goral 22 October 2008 в 02:44
поделиться

5 ответов

Предположите, что все свойства в Объекте-событии неизменны. Спецификация DOM не обращается к тому, что происходит, когда Вы изменяете те значения вручную.

Вот логика, в которой Вы нуждаетесь: прислушайтесь ко всем ключевым событиям. Если это - период, подавите событие и вручную добавьте запятую в позиции курсора. (Вот фрагмент кода для вставки произвольного текста в позиции курсора.)

Вы подавили бы событие в Firefox путем вызова event.preventDefault(); это говорит браузеру не продолжать действие по умолчанию, связанное с этим событием (в этом случае, вводя символ). Вы подавили бы событие в IE путем установки event.returnValue кому: false.

Если это не период, возвратитесь рано из своего обработчика.

2
ответ дан 10 December 2019 в 02:55
поделиться

Попробуйте это. Это работает над всеми браузерами:

window.onload = function () {
    var input = document.getElementById("mytext");

    input.onkeypress = function () {
        var evt = arguments[0] || event;
        var char = String.fromCharCode(evt.which || evt.keyCode);

        // Is it a period?
        if (char == ".") {
            // Replace it with a comma
            input.value += ",";

            // Cancel the original event
            evt.cancelBubble = true;
            return false;
        }
    }
};

Обновление: Pier Luigi указал на проблему с вышеупомянутым. Это не заботится о позиции курсора, не являющейся в конце текста. Это добавит команду в конец даже при вставке некоторого текста в значение.

Решение было бы, вместо того, чтобы добавить запятую, моделировать событие нажатия клавиши для ключа запятой. К сожалению, способ диспетчеризировать синтетической работы событий в различных браузерах, кажется, показывает большое разнообразие и не является легким подвигом. Я буду видеть, могу ли я найти хороший и общий метод для него.

5
ответ дан 10 December 2019 в 02:55
поделиться

Технически Вы просто хотите заменить все точки запятыми.

document.getElementById('mytext').onkeyup = function(){
    this.value = this.value.replace('.', ',');
}
1
ответ дан 10 December 2019 в 02:55
поделиться

Если я смотрю на документ Событий Объектной модели официального документа, поля событий от нажатия мыши определяются как только для чтения. События клавиатуры не определяются там, я предполагаю, что Mozilla следовал за этой политикой для них.

Так в основном, если нет некоторый умный прием, Вы не можете изменить событие путем, Вы хотите. Вероятно, необходимо прервать ключ и вставить символ (сырые данные или переведенный), где каре, способ, которым делают редакторы HTML JS.

1
ответ дан 10 December 2019 в 02:55
поделиться

Это должно действительно быть сделано на лету? При сборе информации, которая будет отправлена на форму или отправлена базе данных, разве не было бы лучше изменить данные, после того как она была отправлена? Тем путем пользователь никогда не видит запутывающего изменения.

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: