我写了几行只接受数字字符,但我的脚本无效。当我键入任何字母表然后它被插入到我不想要的文本框中。我希望文本框只接受数值和“。”小数点。这是我的剧本。告诉我那里有什么问题。
$().ready(function () {
$("input[id*='txtQty']").keyup(function (event) {
var flag = false;
if (event.shiftKey == true) {
event.preventDefault();
}
// Allow Only: keyboard 0-9, numpad 0-9, backspace, tab, left arrow, right arrow, delete
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46) {
// Allow normal operation
flag = true;
} else {
// Prevent the rest
event.preventDefault();
}
if (flag) {
}
});
});
如果可能请给我脚本,这将使我的文本框只有数字和十进制数字。感谢
这是我的完整脚本。问题是我不想要点“。”。
$().ready(function () {
$("input[id*='txtQty']").keydown(function (event) {
var flag = true;
if (event.shiftKey == true) {
event.preventDefault();
flag = false;
}
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {
} else {
event.preventDefault();
flag = false;
}
if (flag) {
if (jQuery.trim(this.value) != "") {
if (IsNumeric(jQuery.trim(this.value)) == true) {
var Symbol = $("span[id*='lblPrice']").text().trim().substring(1, 0);
var oldprice = $("input[id*='txtHiddenPrice']").val();
var newprice = Math.round((oldprice * this.value), 2);
$("span[id*='lblPrice']").text(Symbol + newprice);
UpdateCart($(this).closest('tr').find("input[id*='txtItemId']").val(), $(this).closest('tr').find("input[id*='txtProductId']").val(), this.value);
}
}
}
});
});
所以请告诉我在代码中需要更改的内容,因此它不应该取十进制值。 另一个重要的事情是我将keydown()事件与外卡系统相关联,因为我的页面可能有许多名称结尾的文本框,如 txtQty 。
$("input[id*='txtQty']").keyup(function (event) {
所以请帮助我。感谢
答案 0 :(得分:35)
您无法在e.preventDefault()
事件中使用keyup
。将其更改为keydown
。
$(function () {
$("input[id*='txtQty']").keydown(function (event) {
if (event.shiftKey == true) {
event.preventDefault();
}
if ((event.keyCode >= 48 && event.keyCode <= 57) ||
(event.keyCode >= 96 && event.keyCode <= 105) ||
event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 ||
event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {
} else {
event.preventDefault();
}
if($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
event.preventDefault();
//if a decimal has been added, disable the "."-button
});
});
答案 1 :(得分:16)
您可以在加密时删除非数字字符。
$("#txtQty").keyup(function() {
var $this = $(this);
$this.val($this.val().replace(/[^\d.]/g, ''));
});
的 The demo. 强> 的
答案 2 :(得分:3)
创建仅限数字类并将其添加到元素
这将接受:
- 退格
- 删除
- 数字
- 一位小数
$(".numbers-only").keypress(function (e) {
if(e.which == 46){
if($(this).val().indexOf('.') != -1) {
return false;
}
}
if (e.which != 8 && e.which != 0 && e.which != 46 && (e.which < 48 || e.which > 57)) {
return false;
}
});
答案 3 :(得分:1)
此解决方案仅适用于您未包含十进制数或仅包含0-9
的数字的情况$("#number").keypress(function( event ){
var key = event.which;
if( ! ( key >= 48 && key <= 57 ) )
event.preventDefault();
});
您可以在此处查看正在运行的示例http://jsfiddle.net/yghD3/6/
答案 4 :(得分:1)
我的解决方案接受复制和粘贴并保存插入符号的位置。它用于产品成本,因此仅允许正十进制值。可以很容易地重构,允许使用负数或只是整数位。
$(function () {
$("input.only-positive-decimal").bind("change keyup input", function () {
var position = this.selectionStart - 1;
//remove all but number and .
var fixed = this.value.replace(/[^0-9\.]/g, '');
if (fixed.charAt(0) === '.') //can't start with .
fixed = fixed.slice(1);
var pos = fixed.indexOf(".") + 1;
if (pos >= 0) //avoid more than one .
fixed = fixed.substr(0, pos) + fixed.slice(pos).replace('.', '');
if (this.value !== fixed) {
this.value = fixed;
this.selectionStart = position;
this.selectionEnd = position;
}
});
});
点击html页面:
<input type="text" class="only-positive-decimal" />
答案 5 :(得分:1)
防止非数字数字
$(".number").on('keypress', function (e) {
return e.metaKey || e.which <= 0 || e.which == 8 || e.which == 46 || /[0-9]/.test(String.fromCharCode(e.which));
// cmd/ctrl || arrow keys || delete key || dot key || numbers
});
答案 6 :(得分:0)
您可以尝试http://www.texotela.co.uk/code/jquery/numeric/
This thread提及相同的插件以及您可以尝试的其他一些内容。
答案 7 :(得分:0)
$('.number').keypress(function(event) {
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
答案 8 :(得分:0)
//This will let you enter numbers only and the decimal point ones.
$(window).load(function(){
$('.number').keypress(function(event) {
if(event.which < 46 || event.which >= 58 || event.which == 47) {
event.preventDefault();
}
if(event.which == 46 && $(this).val().indexOf('.') != -1) {
this.value = '' ;
}
});
});
答案 9 :(得分:0)
只允许 1到9个数字和 decimal 。如果插入了其他字符,它将替换这些数字。
<script>
$("input[id*='txtQty']").keydown(function () {
var txtQty = $(this).val().replace(/[^0-9\.]/g,'');
$(this).val(txtQty);
});
</script>
签入fiddle。
答案 10 :(得分:0)
试试此代码
$('#from-amount1').keypress(function(event) {
//alert(event.which == 8);
//alert(event.which);
if((event.which > 47 && event.which < 58) || (event.which == 46 || event.which == 8))
{
// your condition
}
else
{
event.preventDefault();
}
}).on('paste', function(event) {
event.preventDefault();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input type="text" value="" id="from-amount1"/>
&#13;
答案 11 :(得分:0)
element.keypress(function (e) {
var charCode = (e.which) ? e.which : event.keyCode;
var dec=0;
dec = (this.value.match(/[.]/g) || [] ).length;
if(dec===1 && e.key=='.')
return false;
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=46)
return false;
});
答案 12 :(得分:0)
1允许第一个字符点 2拒绝多个点 3允许同时使用两个点键
在您的HTML中
$('#yourId')。keypress(KeyPressOnlyDecimals);
功能KeyPressOnlyDecimals(事件){
if (event.which != 13)
{
let cId = $(window.getSelection().anchorNode).find('input')[0].id;
let tId = $(event.currentTarget).attr('id');
let sel = window.getSelection().toString();
if (((event.which != 46 ) || ($(this).val().indexOf('.') != -1 && ($(event.currentTarget).val().length > 0 && ((cId != tId) || (cId === tId && (sel == null || sel.length == 0)))))) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
$(event.currentTarget).on('paste', function(event) {
event.preventDefault();
});
var currentVal = $(event.currentTarget).val();
let log = $(event.currentTarget).attr('log');
var count = log.split('.').length;
if (count == 2 && event.which == 46 && sel != currentVal)
{
event.preventDefault();
}
if (count >= 2)
{
if (cId === tId && sel.length > 0)
{
var replaced = currentVal.replace(new RegExp(sel, 'g'), event.key);
}
if (count > 2 && $(event.currentTarget).val().length > 0 && ((cId != tId) || (cId === tId && (sel == null || sel.length == 0) )))
{
event.preventDefault();
}
}
else
{
if(event.which == 46)
$(event.currentTarget).attr('log',event.key);
}
console.log($(event.currentTarget).attr('log'));
}
}