2011-05-23 99 views
8

我有这样为一个文本框自定义验证接受金钱:jQuery的自定义验证查询钱

//custom validator for money fields 
$.validator.addMethod("money", function (value, element) { 
    return this.optional(element) || value.match(/^\$?\d+(\.(\d{2}))?$/); 
}, "Please provide a valid dollar amount (up to 2 decimal places) and do not include a dollar sign."); 

看来工作,但我不想让美元的迹象。难道我把它改成这样:

//custom validator for money fields 
$.validator.addMethod("money", function (value, element) { 
    return this.optional(element) || value.match(/^\?\d+(\.(\d{2}))?/); 
}, "Please provide a valid dollar amount (up to 2 decimal places) and do not include a dollar sign."); 

或者我应该只是去掉了美元符号的其他地方,而不是这样的小问题打扰用户?如果那是真的,我应该在哪里做?

感谢您回答这样一个问题。

+0

感谢代码块编辑... – TheTodd 2011-05-23 18:18:46

+0

但你的正则表达式不接受除数字外的任何符号... – woyaru 2012-09-11 12:38:08

回答

3

只需在验证之前剥离该值即可。这是很简单的:

var str = [your value]; 
str = str.replace('$',''); 
2

不,你将其更改为这个..

value.match(/^\ d +((\ d {2}))/。?)

这3个字符构成了匹配美元符号的正则表达式的一部分。

\ $?