使用jQuery为输入框添加掩码而不改变值

4
我正在使用masked-input-plugin,但它会更改值并使字段无效...
在我的js文件中:
$phoneInput.mask('99-99-99-999');

然后在浏览器控制台中

('.phone-input-order-form').val()
"99-99-99-999"

如何在掩码的情况下获取值"999999999"

我想扩展jQuery的val函数,但也许你知道更好的方法?也许不需要这个插件?:D


所以基本上你想避免每次都这样做? - briosheje
@stevenw00 不是DRY的,有很多行代码需要加条件并放置unmask或replace或其他... - madzohan
你觉得要不要使用一个更新的原型,这样就不需要一遍又一遍地扩展.val()了?类似这样的东西?http://jsfiddle.net/jvr0nqz2/ - briosheje
@madzohan:不太确定,我觉得创建一个新的原型可能更容易,但也许只是我的感觉。 - briosheje
如果您更改val,可能会导致某些问题停止工作,因为在masked-input-plugin内部也使用了val,因此它创建了某种循环依赖关系。 - alan0xd7
显示剩余3条评论
3个回答

3

覆盖jQuery的val()函数可能会导致其他脚本出现意外问题。可以尝试以下方法:

$.fn.maskVal = function () {
    return $(this).mask();
};

演示:http://jsfiddle.net/alan0xd7/w4s0v7y3/


2
$('.phone-input-order-form').mask(); => "999999999"

-1

做类似的事情

yourstring.replace("-", ""); 

这不符合DRY原则,我应该添加条件并使用“replace”函数来减少重复的代码行。 - madzohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接