Скажем, я нажал "." (код клавиши 46 на клавиатуре) первое нажатие покажет символ, второе нажатие ничего не покажет, если вы не нажмете другой символ, который отличается от того, что он снова отображается при следующем нажатии.
Я не очень знаком с использованием клавиш, keydown, keyup, keycode, но все, что может сделать это в чистом виде javascript. Мне нужно что-то обратно совместимое до IE6, если возможно, если бы не IE8. характеристика IP-адреса c, я не хочу использовать всплывающие сообщения, если это возможно.
Я читал кое-что о «шаблоне» и сопоставлении его с вводом, но помимо того факта, что я я не знаком с ним также я не уверен, что он обратно совместим.
Вот что я сделал до сих пор:
- Захваченные входы, только числа и точка разрешена - ОК
- Захваченный первый блок IP-адреса, если> 255, или пустая точка, когда нажатие не работает - ОК
- Допускается захват только 3 точек - ОК
Я застрял в том, что при нажатии не должно быть двух точек подряд, поэтому я не могу продолжить захват 2-го, 3-го и 4-го блоков IP-адреса.
МОЙ КОД
Скрипт:
<script type="text/javascript">
function allowNumbersAndDot(e){
var n;
var dot = '.';
var ip = document.getElementById('ipaddr').value;
if (parseInt(ip) < 256 && ip.split(".").length < 4) {
if (ip == dot) {
document.all ? n = e.keyCode : n = e.which;
return (n > 47 && n < 58);
}
else {
document.all ? n = e.keyCode : n = e.which;
return ((n > 47 && n < 58) || n == 46);
}
}
else {
document.all ? n = e.keyCode : n = e.which;
return (n > 47 && n < 58);
}
}
function handleKeyPress0(e) {
if (allowNumbersAndDot(e) ) {
return true;
} else {
return false;
}
}
</script>
Кузов:
<body>
<input id="ipaddr" type="text" title="enter ip address" name="ipaddr" onfocus="this.value=''" maxlength="15" onkeypress="return handleKeyPress0(event);" />
<input id="pingbtn" type="submit" value="PING"/>
</body>