Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как проигнорировать определенные символы при вводе в поле input? (https://javascript.ru/forum/events/30086-kak-proignorirovat-opredelennye-simvoly-pri-vvode-v-pole-input.html)

nraw 23.07.2012 18:00

Как проигнорировать определенные символы при вводе в поле input?
 
У меня такой код
<html>
<head>
<title></title>
<script>
function a() {
var n = document.getElementById("tbnum").value * document.getElementById("tbnum2").value;
document.getElementById("result").innerHTML = n;
}

function check(obj) {
obj.value = obj.value.replace(/[^0-9]/g,'');
}
</script>
</head>
<body>
<input type="checkbox" value="asd" id="tb1">
<input type="text" id="tbnum" oninput="a()" onpropertychange="a()" onkeyup="check(this)">
<input type="checkbox" value="asd" id="tb2">
<input type="text" id="tbnum2" oninput="a()" onpropertychange="a()" onkeyup="check(this)">
<p>Результат: <span id="result">0<span><p>
</body>
</html>

Он подсчитывает произведение первого введенного числа на второе. И отменяет ввод не числовых символов. При этом если ввести в одно из полей не числовой символ (например букву), то в результат записывается NaN. Как сделать, чтобы в этом случае отображался просто 0?

Dim@ 23.07.2012 18:10

<html>
<head>
<title></title>
<script>
function a() {
var n = document.getElementById("tbnum").value * document.getElementById("tbnum2").value;
document.getElementById("result").innerHTML = n;
}

function check(obj) {
obj.value = obj.value.replace(/[^0-9]/g,'');
a();
}
</script>
</head>
<body>
<input type="checkbox" value="asd" id="tb1">
<input type="text" id="tbnum" onkeyup="check(this)">
<input type="checkbox" value="asd" id="tb2">
<input type="text" id="tbnum2" onkeyup="check(this)">
<p>Результат: <span id="result">0<span><p>
</body>
</html>

nraw 23.07.2012 18:14

Да, супер, спасибо!

cyber 24.07.2012 12:53

мне кажется что лучше использовать такую конструкцию

var elem = document.getElementById('sort');
      elem.onkeypress = function (){
      
      setTimeout(handler,0);
      }


вместо keyup

nraw 24.07.2012 17:06

А как запретить ввод 0 первым символом?

Dim@ 24.07.2012 17:13

nraw,
<html>
<head>
<title></title>
<script>
function a() {
var n = document.getElementById("tbnum").value * document.getElementById("tbnum2").value;
document.getElementById("result").innerHTML = n;
}

function check(obj) {
obj.value = obj.value.replace(/[^0-9]/g,'');
if (obj.value.length == 1){
 if (obj.value == "0") obj.value = ""; 
}
if ((obj.value - 0) <= 0) obj.value = "";
a();
}
</script>
</head>
<body>
<input type="checkbox" value="asd" id="tb1">
<input type="text" id="tbnum" onkeyup="check(this)">
<input type="checkbox" value="asd" id="tb2">
<input type="text" id="tbnum2" onkeyup="check(this)">
<p>Результат: <span id="result">0<span><p>
</body>
</html>

nraw 24.07.2012 17:17

Спасибо!


Часовой пояс GMT +3, время: 10:44.