如何验证动态文本框控件
本文关键字:动态 文本 控件 验证 何验证 | 更新日期: 2023-09-27 18:07:55
我有一个动态创建的文本框作为(例如(
for(int i = 0; i < 4; i++)
{
TextBox txtControl = new TextBox();
txtControl.ID = "txt" + i;
txtControl.AutoPostBack = true;
txtControl.TextChanged += txtControl_TextChanged;
}
我想验证文本框输入始终是一个整数,所以我生成了TextChanged
事件处理程序,因为我有如下的CompareValidator
void txtControl_TextChanged(object sender, EventArgs e)
{
Log = new StringBuilder();
CompareValidator validateTextBox = new CompareValidator();
validateTextBox.Operator = ValidationCompareOperator.DataTypeCheck;
validateTextBox.Type = ValidationDataType.Integer;
validateTextBox.ControlToValidate = "txt1";
string Message = validateTextBoxNumber.ErrorMessage;
}
事件txtControl_TextChanged正在激发,但如果传递了非整数,则不会引发错误消息。
我的问题是
- 如何验证输入是整数还是非整数
- 在我直接给出文本框id的示例中,我如何传递它动态地
请尝试以下方式:1( 在你的页面上写下下面的脚本函数,就像下面的一样
$(".numeric").bind("keypress", function (event) {
if (event.charCode != 0) {
var regex = new RegExp("^[0-9]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
}
});
步骤2(为textbox添加css类。像
<input type="text" id="textboxid" class="numeric" />
因此这将只允许数值
现在,因为您已经为这个问题标记了jQuery
,所以我为您的问题提供了jQuery
解决方案。
我正在验证仅用于整数输入的文本框。
更改您的代码如下:
for(int i = 0; i < 4; i++)
{
TextBox txtControl = new TextBox();
txtControl.ID = "txt" + i;
txtControl.cssClass = "validate"
}
将以下脚本标签添加到前端:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".validate").keypress(function (e) {
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57 || e.which == 46)) {
return false;
}
});
});
</script>
Fiddle:http://jsfiddle.net/38nn3rdx/1/上述功能不允许文本输入。
如果客户端验证足够,则可以使用javascript处理验证。或者在不使用compareValidator
的情况下进行如下服务器端验证。
void txtControl_TextChanged(object sender, EventArgs e)
{
TextBox txtBox = sender as TextBox;
if(!string.IsNullOrEmpty(txtBox.Text) && txtBox.Text.All(Char.IsDigit))
{
//Throw error message
}
}
更新:
由于txtControl_TextChanged
是为每个动态TextBox注册的事件,因此当相应的事件发生时,它将被触发。因此,根据sender
,我们可以很容易地验证摘录中提到的文本框。即TextBox txtBox = sender as TextBox;
你也可以使用自己的方法,类似于
void txtControl_TextChanged(object sender, EventArgs e)
{
Log = new StringBuilder();
TextBox txtBox = sender as TextBox;
CompareValidator validateTextBox = new CompareValidator();
validateTextBox.Operator = ValidationCompareOperator.DataTypeCheck;
validateTextBox.Type = ValidationDataType.Integer;
validateTextBox.ControlToValidate = txtBox ;
string Message = validateTextBoxNumber.ErrorMessage;
}