jQuery只有数字和px / em输入

时间:2018-02-06 12:57:23

标签: jquery numbers autofill

我正在尝试人们可以在输入字段中填写像素或ems,但我希望它更好一点,支票/自动填充。

这是我现在拥有的jQuery脚本:

$options.keydown(function (e) {
    // Allow: backspace, delete, tab, escape, enter, dot, e, m , p, x
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190, 69, 77, 80, 88]) !== -1 ||
         // Allow: Ctrl+A, Command+A
        (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) || 
        (e.keyCode >= 35 && e.keyCode <= 40)) {
             return;
    }
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
});

所以人们只能在px或em中输入数字,点或类型。但是当一个人只输入&#34; 20&#34 ;?时,如何自动填充输入?将输入自动填充到&#34; 20px&#34;将是很好的。而当这个人只是在输入&#34; eeee&#34;在该领域,它将被清除。所以只有格式&#34; px&#34;或&#34; em&#34;被允许。当某些人没有输入一个单元时,输入会自动填充&#34; px&#34;背后。

这可能吗?

2 个答案:

答案 0 :(得分:0)

你能不能简单地使用type =&#34; number&#34;在输入字段?并将单位值附加到JS中,或者替换为第二个表单字段(选择,带选项)。

答案 1 :(得分:0)

以下是现在为我工作的脚本:

jQuery('.units input').on('change', function() {

    e = jQuery(this).val();
    units(e);
    jQuery(this).val(e);

});

var units = function( value) {
    if ( jQuery.isNumeric(value) ) {
        e = value + 'px';
        return e;
    } else if ( value.indexOf('px') > -1  || value.indexOf('em') > -1  ) {
        var Pixels  = e.replace("px", "");
        var Ems  = e.replace("em", "");
        if ( jQuery.isNumeric(Pixels) || jQuery.isNumeric(Ems) ) {
            e = value;
            return e;
        } else {
            e = "0px";
            return e;
        }
    } else {
        e = "0px";
        return e;
    }
};