首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使输入"number“的RangeValidator在所有本地化中工作?

如何使输入"number“的RangeValidator在所有本地化中工作?
EN

Stack Overflow用户
提问于 2016-09-01 20:26:50
回答 2查看 980关注 0票数 1

RangeValidator将获取inputvalue并使用regex验证它。正则表达式的一部分是本地化的十进制字符。

因此,在德国文化中,如果我输入RangeValidator,那么100.00就会失败,但是它会接受100,00,因为,是德国文化的十进制字符。

在新的input[type=number] (asp:TextBox with TextMode="Number")的HTML5上,我可以输入100,00100.00 (将step属性设置为"0.01“),它将始终保存值100.00。这将导致RangeValidator在德国文化中一直失败。

将位置更改为en-US可以解决问题,但我需要用户区域设置中的应用程序。

不知何故,我可以告诉RangeValidator总是使用.作为十进制字符,或者有更好的方法来处理这种情况吗?

EN

Stack Overflow用户

回答已采纳

发布于 2016-09-04 23:46:29

所以这是肮脏的,但有效的:

我重写了框架的ValidatorValidate函数:

代码语言:javascript
运行
复制
function ValidatorValidate(val, validationGroup, event) {
    // new code: 
    if (typeof (val.customized) == "undefined") {
        var data = $(val).data();
        for (var key in data) {
            val[key] = data[key];
        }
        val.customized = true;
    }

    // this code was copied from the framework:
    val.isvalid = true;
    if ((typeof (val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
        if (typeof (val.evaluationfunction) == "function") {
            val.isvalid = val.evaluationfunction(val);
            if (!val.isvalid && Page_InvalidControlToBeFocused == null &&
                    typeof (val.focusOnError) == "string" && val.focusOnError == "t") {
                ValidatorSetFocus(val, event);
            }
        }
    }
    ValidatorUpdateDisplay(val);
}

现在,我可以使用数据属性在验证器上强制使用特定的JS变量。要强制RangeValidator使用en-US区域设置,我只需强制它从ASPX标记将decimalchar设置为.,将digits设置为2

代码语言:javascript
运行
复制
<asp:RangeValidator ID="rv" runat="server" Data-DecimalChar="." Data-Digits="2" MinimumValue="-100" MaximumValue="100" ControlToValidate="tb" Type="Currency" />

但是,这太脏了,不是吗?

be aware of problems with UpdatePanels when overriding JS functions that involve the client validation mechanism,就像这个。

我真正感到困惑的是,即使我只是在修改客户端脚本时,这也是可行的。服务器端验证接受来自英语文化的值。这真的很奇怪。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39280347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档