Не могу ничего напечатать в FireFox
Я испытываю странную проблему в дополнение ко всем другим моим проблемам. Я создаю приложение ASP.NET MVC. Я использую flexigrid и пытаюсь использовать модальные диалоги. В IE, Google Chrome и Opera я могу набирать цифры только в элементе управления Client No, но в FireFox я ничего не могу набрать.
Вот как это контролирует рендеринг:
<div id="add-edit-dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; height: 622px;" scrolltop="0" scrollleft="0">
<form id="add-edit-form" novalidate="novalidate">
<fieldset>
<legend>Client Info</legend>
<input id="fntype" type="hidden" name="fntype" value="">
<input id="ClientId" type="hidden" value="" name="ClientId" data-val-number="The field ClientId must be a number." data-val="true">
<div class="editor-label" style="background-color: rgb(255, 255, 255);">
<div class="editor-field" style="background-color: rgb(255, 255, 255);">
<input id="ClientNumber" class="numericOnly input-validation-error" type="number" value="" name="ClientNumber" data-val-required="The Client No field is required." data-val-remote-url="/Client/doesClientNoExist" data-val-remote-type="POST" data-val-remote-additionalfields="*.ClientNumber,*.ClientId" data-val-remote="Client Number already exists. Please enter a different Client Number." data-val-number="The field Client No must be a number." data-val="true">
<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="ClientNumber">
Я использую свой собственный класс numericOnly и номер типа (который отображается как счетчик в Google Chrome).
У меня есть файл CardNumbers.js, где я определяю класс numericOnly следующим образом:
$(".numericOnly").keypress(function (e) {
if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});
Код выше я нашел некоторое время назад в одном из вопросов Stackru, и он работает нормально в других браузерах.
Итак, вы видите, что может быть не так и почему я не могу ничего печатать, кроме как только в FireFox?
3 ответа
Попробуй это:
$(document).ready(function() {
$(".numericOnly").keydown(function(event) {
// Allow: backspace, delete, tab, escape, and enter
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
});
Попробуйте это решение. Я надеюсь, что это то, что вы ищете.
Просто поменяй
от
if (String.fromCharCode(e.keyCode).match(/[^0-9]/g))
в
if(String.fromCharCode(e.which).match(/[^0-9]/g))
Это звучит как проблема браузера. Если ваш Firefox устарел, попробуйте обновить через "Справка"> "О программе" или по адресу http://getfirefox.com/. Я просто взял его на тестовую площадку HTML в Firefox v18 (последняя версия на канале релиза), и он работал нормально.