如何轻松阻止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();
}
}
答案 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); }" />
答案 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);
}
如果你绝对想要一个关键事件,你可以将'change'
更改为'keyup'
并且它会起作用,但仍然可以在不触发keyup
事件的情况下右键单击并粘贴; < / p>
答案 3 :(得分:-1)
试试这个!
$("#input").on("keypress keyup",function(){
if($(this).val() == '0'){
$(this).val('');
}
});
答案 4 :(得分:-2)
<input type="text" onKeyUp="Prevent(this.value)" id="testInput" />
function Prevent(value) {
var x = document.getElementById("testInput");
if (value == 'O') {
x.value = '';
}
}