使用 jQuery 使用 asp.net 必填字段验证器验证必填字段
validating required fields with asp.net required field validators using jquery
HTML:
<fieldset>
<p>
<label>SOME LABEL</label><span class="required"> *</span>
</p>
<input type="text" id="txtBox">
</fieldset>
使用jQuery,我试图获取"span.required"并添加一个类"missing"(将颜色更改为红色)。
JQuery Code:
$('#txtBox').closest('fieldset').find('span.required').addClass('missing');
ASP.NET 中必填字段验证器的 JQUERY 代码:
for (var i = 0; i < Page_Validators.length; i++) {
var val = Page_Validators[i];
var ctrl = document.getElementById(val.controltovalidate);
if (ctrl != null && ctrl.style != null) {
if (!val.isvalid) {
ctrl.closest('fieldset').find('span.required').addClass('missing');
}
else {
//alert('no error');
}
}
}
通过控制台出错:对象 [ctrl 对象 - 文本框] 没有最接近的方法
我已经尝试过使用"查找"父"等进行不同的干预,但我尝试的似乎都没有奏效。
我的代码有什么问题?我无法抓住那个跨度。
感谢大家的投入,我从大家的投入中学到了很多东西。每个人的答案都有有效且有效的代码,但是只有选定的人提供了解决方案。
首先,您应该对HTML进行一些更改,这不仅可以帮助您解决此问题,还可以使代码更干净,更有效:
- 向所有
<label>
标签添加一个for
属性,将它们与它们匹配的输入配对(这实际上应该始终使用标签来完成),以及 - 将
<span class="required"> *</span>
移动到标签内(因为它确实是标签的一部分)
生成的代码如下所示:
<fieldset>
<p>
<label for="txtBox">SOME LABEL<span class="required"> *</span></label>
</p>
<input type="text" id="txtBox">
</fieldset>
一旦你这样做了,你想要完成的事情就会变得容易得多:
而不是:
ctrl.closest('fieldset').find('span.required').addClass('missing');
。您可以使用输入 ( val.controltovalidate
) 的 ID 作为 JQuery 选择器的一部分来直接查找相关标签:
var $targetLabel = $("label[for='" + val.controltovalidate +"']")
$targetLabel.find('span.required').addClass('missing');
我已经多次使用它来将验证与正在验证的字段的标签配对......快速干净。 :)
编辑:我拆分了最后一个JS片段以防止它滚动,但它可能是一行。 :)
试试 txtbox.parent() 代替。
txtbox.parent().find('span.required-field').addClass('missing')
$('span.required').addClass('missing');
试试这个:
$(function(){
$('#txtBox').parent().find('span.required').addClass('missing');
});
检查 http://jsfiddle.net/alaminopu/unZPZ/
看看这个,我同时使用了closest()和parent()。
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<style>
.missing{color:red;}
.required{color:blue;}
</style>
<script>
$(document).ready(function(){
$(function(){
$('#txtBox').parent().find("span.required").removeClass("required").addClass("missing");
//$('#txtBox').closest("fieldset").find("span.required").removeClass("required").addClass("missing");
});
});
</script>
</head>
<body>
<fieldset>
<p>
<label>Some Label</label> <span class="required"> *</span>
</p>
<input type="text" id="txtBox">
</fieldset>
</body>
</html>
http://jsfiddle.net/GdBnw/
呵呵。
相关文章:
- Rad网格编辑模式通过选中复选框时的java脚本启用禁用所需的字段验证器
- 回发前所需的字段验证程序不起作用
- 将字段设置为有条件地使用所需的字段验证器
- .NET MVC 5 不显眼的禁用字段验证
- Liferay网络表单组件字段验证
- 输入字段验证的键代码函数在chrome中没有按预期工作
- MVC 5防止隐藏字段的必需字段验证
- jQuery字段验证-是否为空,以及正确的值
- JS如何捕获基于键入然后删除的字符的字段验证逻辑
- Javascript Wordpress字段验证匹配
- 字段验证器,它不允许移动到下一个字段
- 在更改另一个字段时触发Yii字段验证
- 进度条和所需字段验证器
- 字段验证:字段需要 JavaScript 正则表达式
- JS 字段验证 - 循环遍历对象,每个字段有三个数据注意事项
- Javascript 空字段验证 - 无法读取未定义的属性“值”
- 有没有办法知道 .net 必填字段验证器是否从 js 启用或禁用
- 避免在字段验证失败时调用 AJAX onsuccess
- 使用 jQuery 使用 asp.net 必填字段验证器验证必填字段
- 如何使用 Angular.js/Javascript 为 url 添加输入字段验证