2

我正在为 MVC3 使用 jQuery 不显眼的验证版本 2.0。我也有最新的 jquery.validate (v 1.9)。我有一个带有此代码的弹出表单:

$(document).ready(function () {
    $('#createForm').submit(function () {
        $.validator.unobtrusive.parse($('#createForm'));  
(more)

(第三行是必需的,以便验证由 javascript 添加的表单字段。)

验证工作正常,除了输入到绑定到视图模型中的小数属性的输入标记中的$1,000.00无效,而1,000.00有效。显然,“$”在验证器眼中将值转换为字符串。

我已经研究了很多小时,但我只发现了另一个类似的问题(也在 SO 上,但没有得到答复)。我不敢相信每个在模式对话框中处理货币值的 MVC3 开发人员都遇到过这种情况,否则我们现在肯定会有一些解决方案,对吧?

我通过创建 DecimalBinder解决了服务器端的问题。现在我需要一个客户端验证的解决方案。我一直在努力研究 jquery.validate.unobtrusive 的 API,但似乎找不到钩子。我不想修改任何标准的 javascript 库。

4

1 回答 1

0

自定义验证方法如何在验证之前首先删除任何 $ 字符?

  var currentVal = (control's actual value);
  currentVal = currentVal.replace('$','');

然后继续验证。明显的缺点是需要自定义验证器。

于 2012-05-11T14:22:56.843 回答