javascript - 通过 js 启用/禁用 aspx 验证器在代码隐藏中不成立?

标签 javascript jquery asp.net validation customvalidator

我想知道我在仅通过 js 禁用这些功能而不必在后面的代码中添加重复代码方面缺少什么。

我使用此代码来禁用/启用验证器:

validator: {
        enable: function (id) {
            console.log('enable',id);
            var validator = document.getElementById(id);
            ValidatorEnable(validator, true);
        },
        disable: function (id) {
            console.log('disable',id);
            var validator = document.getElementById(id);
            ValidatorEnable(validator, false);
        }
    },

它工作得很好,直到我进行回发来保存一些数据,...这些禁用的验证器没有被禁用。

因此,如果 IsPostBack 为 true,我必须在 OnLoad() 中运行一些重复的代码,以禁用我已经通过 js 禁用的验证器。

编辑:删除了任何代码,因为不需要获得答案。答案:服务器端还必须禁用这些元素,由于这些原因无法显式完成:在这里找到,感谢@ConnersFan:https://msdn.microsoft.com/en-us/library/aa479045.aspx

  • 某些验证控件可能不支持客户端脚本。一个很好的例子:如果您使用带有服务器验证功能但没有客户端验证功能的 CustomValidator。
  • 安全考虑。有人可以很容易地获取带有脚本的页面并禁用或更改它。您不应该依赖脚本来阻止不良数据进入您的系统,而只是为了向用户提供更即时的反馈。因此,如果您使用 CustomValidator,则不应在没有相应的服务器验证函数的情况下提供客户端验证函数。

最佳答案

正如您在 ASP.NET Validation in Depth 中看到的那样,在客户端启用/禁用验证器的首选方法是使用 ValidatorEnable:

var validator = document.getElementById(id);
ValidatorEnable(validator, false);

在服务器端,您还必须显式启用/禁用验证器(我认为您无法避免这一点):

validator.Enabled = false;

此更改将保留在客户端代码中,这与 Javascript 代码中的更改不同,后者不会在回发时保留。

关于javascript - 通过 js 启用/禁用 aspx 验证器在代码隐藏中不成立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457581/

相关文章:

javascript - 列出从文件输入中选择的文件

javascript - javascript中的整数?

jquery - 使用 Jquery 将选项组添加到选项列表

javascript - FabricJS - ZoomToPoint 不适用于 backgroundImage

javascript - 点击注册 1d 战舰游戏。使用数组记录以前的用户输入,然后与当前输入进行交叉检查

javascript - 如何在 JavaScript 中检查动态数组的范围?

javascript - 发送同步 Ajax 请求时显示微调器

javascript - 如何使用javascript切换小数和四舍五入的整数

html - 从后面的代码修改无序列表

c# - 阶梯饼图与 asp :chart control