在移动设备中防止输入类型编号的“DOT”

时间:2013-06-14 09:14:48

标签: javascript jquery validation jquery-mobile cordova

正在使用带有PhoneGap的jQueryMobile .. 目前我有一个问题..我搜索它但没有得到确切的答复。 我的问题是我想阻止在文本框中键入DOT。文本框用于输入AGE。

<input type="number" class="form_textbox_half" data-role="none" id="age" pattern="[0-9]*">

及其Keypress事件;

$('#age').live('keypress', function(){preventDot(event)});

然后其功能

function preventDot(event) {
    alert(0);
    //var test = document.getElementById("#age");
    var key = event.charCode ? event.charCode : event.keyCode;
    $("#age").innerHTML = key;
    if (key == 46) {
        return false;
    }
}

但它不起作用..我想阻止在文本框中键入DOT。 我认为这是一个小问题...... :( 但是没有得到解决方案..请帮助我!

4 个答案:

答案 0 :(得分:2)

修正了您的问题

FIDDLE

问题在于您没有使用preventDefault来阻止keypress事件的传播

这是修改后的方法的外观:

function preventDot(event)
{
    alert(event.charCode)
    //var test = document.getElementById("#age");
    var key = event.charCode ? event.charCode : event.keyCode;  
    $("#age").innerHTML = key;
    if (key == 46)
    {
        event.preventDefault();
        return false;
    }    
}

答案 1 :(得分:0)

您可以尝试使用此代码解决当前问题

function bindOnInputQuantity() {    
    $('.receiveQty').blur('input', function() {
    var sel = $(this);
    var selDel = $(this).next();
    if(sel.val() === '') {
        sel.val(0);
        sel.data('current', 0);
    } else {
        if(parseInt(sel.val()) > parseInt(selDel.val())) {
            alert('Receive Quantity Cannot More Then Delivery Quantity!');
            sel.val(sel.data('current'));
            sel.focus();
            return false;
        } else {
            sel.val(parseInt(sel.val()));
            sel.data('current', sel.val());
        }            
      }        
   });}                                                                            

答案 2 :(得分:0)

我发现只有这个能起作用

$(".vinput").on("input change paste",
function filterNumericAndDecimal(event) {
    var formControl;
    formControl = $(event.target);
    var newtext = formControl.val().replace(/[^0-9]+/g, "");
    formControl.val(''); //without this the DOT wont go away on my phone!
    formControl.val(newtext);
});

但是如果需要包含点,请使用[^ 0-9。]作为正则表达式

答案 3 :(得分:-1)

像这样使用

$('#age').live('keypress', function(event){preventDot(event)});

See Demo