我有一个带有几个输入标签的员工html表单。
问题是某些输入标签具有基于登录到系统的当前用户的动态验证标准。
例如:
用户1:将ssn视为包含14个字符的必填字段
用户2:将ssn视为包含10个字符的必填字段。
我从DB获得标准。
我成功地实现了required
:
var screenConfig = @Html.Raw(new JavaScriptSerializer().Serialize(ViewBag.ScreenConfig));
$(document).ready(function () {
_.each(screenConfig, function(value, key) {
if (value.IsRequired == true) {
$("#"+value.ElementId).attr("required", "required");
$("#"+value.ElementId).addClass("required-input");
}
});});
但是我对文本输入长度感到困惑,除了从服务器发送脚本以分别处理每个元素之外,我想不出什么。 可以有效地以其他方式完成吗?
答案 0 :(得分:1)
我要做的是在输入标签中添加一个额外的属性来指定长度。然后在表单提交上为具有附加属性的输入执行.each。然后在那里.each验证长度。
答案 1 :(得分:0)
基于@Avitus建议: 这就是我根据预定义的配置对HTML元素进行动态验证的方法: 1.我在DB ScreenElement,ScreenSettings:
中创建了两个表string aTime = "00:30.19";
2.我按屏幕关键字 CREATE TABLE [HR].[ScreenElement](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ElementId] [nvarchar](50) NULL,
[ElementName] [nvarchar](50) NULL,
[ScreenId] [int] NULL,
[IsRequired] [bit] NULL,
[MinLength] [int] NULL,
[MaxLength] [int] NULL,
CONSTRAINT [PK_ScreenElement] PRIMARY KEY CLUSTERED (
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [HR].[ScreenSettings](
[Id] [int] IDENTITY(1,1) NOT NULL,
[NameA] [nvarchar](50) NULL,
[NameL] [varchar](50) NULL,
[ScreenKey] [varchar](150) NULL,
CONSTRAINT [PK_ScreenSettings] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
进行配置,并在屏幕加载时将其传递给ViewBag,我将其序列化为js对象。
3.文档准备好后。我使用ControllerName.ActionName
属性和一些样式类标记元素。
data-x
那是它。