动态限制iOS上数字输入中的特殊字符

时间:2014-05-21 17:57:43

标签: javascript jquery

我见过很多与此类似的问题,但并不是我想要的......如果我错过了一个问题,请道歉。

因此,我在iOS UIWebView和移动版Safari中运行的HTML应用程序有一系列数字输入。他们只需要接受数字而不是特殊字符或字母,并且必须验证最大值。

我目前正在使用e.which进行验证,这在大多数时间都有效,但当然有一堆标点字符(尽管在iOS上有不同的)报告相同键码作为数字键,我无法弄清楚我是否可以在输入字段中显示之后不允许输入它们,而不是将它们删除。

(已删除不相关的代码和结构。)

<input type="number" id="input-patients" value="1600" max="10000" min="0" />
<input type="number" id="input-pct_dropout" value="16" max="100" min="0" />
<input type="number" id="input-annual_dollars" value="275" max="500" min="0" />

JavaScript的:

$('.input').on('keydown', function(e){

    var charCode = (e.which) ? e.which : event.keyCode;
    if (charCode > 47 && charCode < 59 || charCode == 8){
    // here a bunch of other stuff happens
       return true;
    }
    else{
       return false;
    }
});

我可以检查特殊字符,而不先在输入字段中显示它们,然后从字符串中剥离它们吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

所选输入元素写入事件的

onkeyup: 从输入框中获取值,然后检查数字? (如果是,则isNAN(val)返回false并停止进一步处理),否则继续执行下一个调用递归函数turnToInt的步骤,并使用该函数返回的有效INT设置此输入框的值;

turnToInt函数:检查有效数字(如果是,则返回该数字或从val中删除最后一个字符,并调用自身进行进一步验证,最后返回有效的INT数字);

$(".select_object").keyup(function() {
      (val = $(this).val()) && isNaN(val) && $(this).val(turnToInt(val))
    });

function turnToInt(val) {
    return isNaN(val) ? turnToInt(val.substr(0,val.length-1)) : val;
  }