Вы можете сделать замену ',' на '.' лучше внутри обработчика событий 'keyup' со следующим
$(this).val($(this).val().replace(/,/,'.'));
Таким образом, вы можете использовать следующие dataEvents
dataEvents: [
{
type: 'keyup',
fn: function(e) {
var oldVal = $(this).val();
var newVal = oldVal.replace(/,/,'.');
if (oldVal !== newVal) {
$(this).val(newVal);
}
}
},
{
type: 'keypress',
fn: function(e) {
var key = e.charCode || e.keyCode; // to support all browsers
if((key < 48 || key > 57) && // if non digit
key !== 46 && key !== 44 && key !== 8 && // and not . or , or backspace
key !== 37 && key !== 39) { // arrow left and arrow right
return false;
}
}
}
]
На в следующей демонстрации вы можете увидеть результаты вживую. Единственный недостаток, который я вижу в этом примере, заключается в следующем: если вы попытаетесь ввести запятую в середине текста , позиция курсора (каретка) изменится на конец ввода после замены. запятая, чтобы указать. Вероятно, это не настоящая проблема в вашем случае. Если вы хотите сохранить позицию курсора, вы, вероятно, должны сделать это
document.selection
используется для IE или .selectionStart
и .selectionEnd
для Firefox.
ОБНОВЛЕНО : я исправил проблему с использованием e.keyCode
внутри события keypress
в Firefox. Я следую информации из здесь и использую сейчас e.charCode || e.keyCode
вместо e.keyCode
. Приведенный выше код и демо-версия исправлены.