【问题标题】:Magento date of birth field validation is not working properlyMagento 出生日期字段验证无法正常工作
【发布时间】:2011-12-13 13:22:18
【问题描述】:

在 Magento 注册页面验证不允许我提交某些有效日期的表单。

例如:-

08/24/1988
MM/DD/YYYY

上述日期不适合我。 字段类是

输入文本验证-自定义验证失败

我在下面的源码中找到了js

var customer_dob = new Varien.DOB('.customer-dob', false, '%m/%e/%y'); 

哪里可能错了。谁能给我建议。

法师版本:1.5.1.0

【问题讨论】:

  • new Varien.DOB('.customer-dob', false, '%m/%e/%y');在 Magento 2 中不起作用

标签: validation magento magento-1.5


【解决方案1】:

错误出现在/js/varien/js.js,第438行。

var error = false, day = parseInt(this.day.value) || 0, month = parseInt(this.month.value) || 0, year = parseInt(this.year.value) || 0;

显然,varien 爱上了all too well-known parseInt Bug/Feature.

简而言之,在 ES5 之前,所有以0 开头的字符串都被视为octal/base-8 数字。由于08 在base-8 中不存在,parseInt-ing 它的计算结果为0

parseInt() 恰好采用第二个可选参数,指示它应该用于解释的基数。

parseInt('8');      // => 8
parseInt('08');     // => 0
parseInt('08', 10); // => 8

所以,你的问题的解决方案是修补上面提到的行来阅读

var error = false, day = parseInt(this.day.value, 10) || 0, month = parseInt(this.month.value, 10) || 0, year = parseInt(this.year.value, 10) || 0;

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2012-06-25
    相关资源
    最近更新 更多