我正在尝试将0限制为输入字段中的第一个数字。它在macbook中工作正常,但是当用户在windows系统中输入数量时,输入字段除了数字0之外,它也不是数字9作为第一个数字,例如:9845但它除了8945之外。下面是代码。
我只是对这个bug的位置感到困惑。如果有人能帮助我解决这个问题会很棒:
JS CODE:
$("#stamp_amount").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A, Command+A
(e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
if ( event.keyCode == 46 || event.keyCode == 8) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode !==9) && (event.keyCode < 48 || event.keyCode > 57 )) {
event.preventDefault();
}
else{
if($.trim($(this).val()) =='')
{
if(event.keyCode == 48 || event.keyCode == 57 || event.keyCode == 96 || event.keyCode == 105){
event.preventDefault();
}
}
}
}
});
答案 0 :(得分:1)
不检查按下了哪个键,而是检查输入值本身。
正则表达式/^0|[^0-9.]/
表示starts with 0 or contains character other than numbers and .
$(document).ready(function() {
$('#inp').change(function() {
if ($(this).val().length == 0 || /^0|[^0-9.]/.test($(this).val())) {
$('#valid').removeClass('valid');
} else {
$('#valid').addClass('valid');
}
// make input valid
$(this).val($(this).val().replace(/^0+|[^0-9.]+/, ''));
});
})
#valid:after {
content: "No";
color: red;
font-weight: bold;
}
#valid.valid:after {
content: "Yes";
color: green;
font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="inp" placeholder="51.54" />Eur
<br/>
<span id="valid"></span>