Следующий код - это моя ловушка, чтобы принимать только целочисленное значение, вводимое пользователем:
isNumber: function(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105) || charCode == 8 || charCode == 46 ||
charCode ==36 || charCode ==35){
console.info("Im in if", charCode)
return true;
} else {
console.info("Im in else", charCode)
//evt.stopImmediatePropagation();
//evt.stopPropagation();
evt.preventDefault();
return false;
}
},
ТЕКСТОВОЕ ОКНО
<ui-textbox label = "initial cost"
name = "cost"
v-validate = "`numeric|decimal`"
v-on:keydown = "isNumber"
:maxlength = "18"
:enforceMaxlength = "true"
value = 0.00
format = "number"
></ui-textbox>
Это хорошо работает, когда я использую английский формат клавиатуры. Но когда я перехожу на японский язык, это не действует. evt.preventDefault() может помочь в этом, я добавил evt.stopImmediatePropagation() и evt.stopPropagation(), чтобы опробовать их функциональность, но все же мне не повезло, и я не могу заставить ничего работать.
С ВАШЕЙ ССЫЛКОЙ НЕ ЖЕ. Ссылка, которую вы указали, работает только на английской клавиатуре. Но при переходе на японский язык не работает.
@Seblor Я иду внутрь блока кода else, но не мешаю пользователю вводить нецелочисленные значения.
Вы можете дать нам jsfiddle или сниппет?
@Seblor Возвращенный ключевой код - 229, но даже я заблокировал его, он все равно отображается.
@Seblor NO. Это не дубликат. Если вы попытаетесь переключить клавиатуру на японский язык Microsoft IME, вы поймете, что я имел в виду. В настоящее время я создаю JSFiddle.
Когда вызывается этот код? Просто чтобы быть уверенным в очевидном: он должен вызываться, когда происходит нажатие клавиши.
@Eytibi Да, во время нажатия. JacobGoh дал мне эту ссылку stackoverflow.com/questions/16029475/…, но как я могу применить ее к моей функции?
Этот рабочий пример у вас работает? Я знаю, что это не идеально, потому что это приведет к сбросу позиции набора текста. Кроме того, есть причина, по которой вы не можете использовать тип ввода number?
@ t.niese Это работает. Но как его вставить или использовать? И я использую JS. Обновлю свой вопрос для поля ввода.
@ramedju Согласно ссылке от JacobGh, вы должны привязать свою функцию (дополнительно) к событию изменения, чтобы гарантировать, что она запускается также для японских клавиатур.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Итак, проблема в том, что вы не входите в блок кода
else? Если вам нужны коды клавиш для проблемы совместимости, вы можете использовать этот веб-сайт, чтобы получить их: keycode.info