#javascript #dom
#javascript #dom
Вопрос:
Я хотел бы создать тестовую функцию, которая изменит символ ‘.’ на символ ‘,’ в текстовом поле. Я не могу изменить серверную часть, поскольку это документ Google. ‘56.3’ рассматривается как число, но ‘56,3’ равно (!).
Допустим, я использовал приведенный ниже код :
function changeValue(e) {
e = window.event || e;
var keyCode = e.charCode || e.keyCode;
if (String.fromCharCode(keyCode)==='.') {
event.target.value =",";
return false;
}
return true;
}
function start_up () {
console.log('Start');
var tmp = document.getElementById('ss-form');
tmp = tmp.getElementsByTagName('input');
console.log(tmp);
for(var i=0; i<tmp.length; i ) {
tmp[i].addEventListener('keypress',changeValue, false);
console.log(i, tmp[i]);
}
};
window.addEventListener("load",start_up, false);
Тогда проблема в том, что в поле добавляются оба ‘,’ и ‘.’. Как я могу отменить событие нажатия ‘.’? Как я могу заменить событие нажатия ‘.’ на событие нажатия ‘,’?
Я искал в Интернете и не вижу решения с помощью функции addEventListener.
Ответ №1:
Использование e.preventDefault()
должно сделать это.
Я собрал демонстрационную версию jsFiddle: http://jsfiddle.net/yrYH4 /
Ответ №2:
Это может быть связано с тем, что вы возвращаете true из обработчика событий.
Вы можете использовать event.preventDefault
или return false
для предотвращения выполнения действий по умолчанию — вы возвращаете false из внутреннего оператора if вашего обработчика, а затем возвращаете true из функции main.
Комментарии:
1. Вызов
return
внутри оператора if выводит вас из функции, а не только из оператора if .