如何预防' 0'成为文本框中输入的第一个字符

时间:2014-03-12 12:14:37

标签: javascript html character zero

如何轻松阻止0成为使用JavaScript在文本框中输入的第一个字符?我想要像.Net OnKeyDown()这样的东西。当用户按下 0 键以防止第一个字符

e.Handled = true;

为什么这不起作用?

function PreventFirstCharZero()
{
var TB = document.getElementById("idbox").value;
var TextLength = TB.value.length;

if (48 == event.keyCode && 0 == TextLength)
{
    event.preventDefault();
}
}

这不起作用

function PreventFirstCharZero()
{
    if ('0' == document.getElementById("idbox")[0].value)
    {
        event.preventDefault();
    }
}

5 个答案:

答案 0 :(得分:6)

试试这个http://jsbin.com/sanoz/4/edit

document.getElementById('input').addEventListener('keyup', function(){
    if(this.value.charAt(0) === '0')
        this.value = this.value.slice(1);
});

您可以使用以下方法阻止粘贴:

<input onpaste="return false;" id="input"/>

或看看这个:detecting change in a text input box using jquery/javascript

答案 1 :(得分:0)

短而甜蜜,纯粹的javascript单行:

<input onkeyup="if (event.srcElement.value.charAt(0) == '0') { event.srcElement.value = event.srcElement.value.slice(1); }" />

JsFiddle

答案 2 :(得分:0)

说实话,防止输入密钥并不是一个好的解决方案,因为你总是可以复制/过去而事件不会触发。

如果我可能建议您使用其他解决方案,请使用change(或blur,因为更改在所有浏览器中显然不起作用)并删除第一个字符,如果它是0:

document.getElementById('noZero').addEventListener('blur', checkZero)

function checkZero(){
    var val = this.value;
    if(val.charAt(0) === '0')
        this.value = val.slice(1), checkZero.call(this);
}

http://jsfiddle.net/F5ZSA/6/


如果你绝对想要一个关键事件,你可以将'change'更改为'keyup'并且它会起作用,但仍然可以在不触发keyup事件的情况下右键单击并粘贴; < / p>

答案 3 :(得分:-1)

试试这个!

$("#input").on("keypress keyup",function(){
    if($(this).val() == '0'){
      $(this).val('');  
    }
});

jsfiddle

答案 4 :(得分:-2)

<input type="text" onKeyUp="Prevent(this.value)" id="testInput" />

的JavaScript

function Prevent(value) {
    var x = document.getElementById("testInput");
    if (value == 'O') {
        x.value = '';
    }
}

Demo Fiddle