我正在处理一个我必须动态添加多个字段的页面。我基本上已经完成了这项工作,但我被审核所阻碍 问题是表单字段需要特定的正则表达式验证,当只有一个输入时效果很好。现在,当字段由javascript动态创建时,它只验证第一个字段。
我已经用Google搜索但没有找到任何内容,现在我唯一的想法就是将设置文件中的正则表达式值传递给javascript并在用户端验证它但我将无法使用{{1然后。
所以我的问题是 - 是否可以将服务器端验证添加到由javascript动态创建的字段中,以及如何?
谢谢!
答案 0 :(得分:1)
简短的回答是 - 它可能是可能的,但它非常困难,解决方案非常脆弱,需要大量维护。
理论上,如果你能够在使用正则表达式验证器时找出ASP.NET生成的JS代码然后对其进行反向工程,那么你可以这样做。这里的主要问题是在客户端而不是在服务器端创建新字段。
如果您可以更新页面以便在服务器端动态创建新的文本框,那么您只需要在OnInit方法中创建新的文本框和新的验证器,这样就可以了。
以下是它的样子。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//set the appropriate conditions for your solution
if (true)
{
//create text box
TextBox txtNewField = new TextBox();
txtNewField.ID = "txtNewField";
//create and initialize validator
RegularExpressionValidator regexR1 = new RegularExpressionValidator();
regexR1.ValidationExpression = "set the regex here";
regexR1.ControlToValidate = txtNewField.ID;
regexR1.ErrorMessage = "you are doing something wrong";
//add both of these to page wehre needed.
//I assume there is a panel control where you are adding these
//but you can customize it more
pnlFields.Controls.Add(txtNewField);
pnlFields.Controls.Add(regexR1);
}
}
答案 1 :(得分:0)
如果您需要服务器端验证和客户端验证,则需要创建输入类型=“文本”作为 runat =“server”
示例强>: -
<强> <input type="text" class="alphanum" id="txtName" name="txtName" runat="server" />
强>
使用Jquery使用正则表达式验证
$("input.alphanum").bind("keyup", function(e) {
this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});