我正在尝试检测表单中的任何元素是否有一个名为data-val
的数据属性。
如果存在,则运行If语句中包含的函数。我试过了:
var checkValidation = $('.uiModalContent').closest('form').find('input[data-val="true"], textarea[data-val="true"]');
if(checkValidation.length > 0) {
$.validator.unobtrusive.parseDynamicContent('.uiModalContent');
}
然而,它并没有像预期的那样工作,可能是因为checkValidation变成了一个数组,使用长度进行检查也可能不是最好的方法。
谁能提供修复/替代解决方案?
谢谢
使用has属性选择器
'[data-val]'
即:
$('input[data-val], textarea[data-val], select[data-val]').chain().stuff();
使用[data-val="true"]
意味着[data-val]
的值为"true"
,例如:
<element data-val="true" />
var $elems;
$elems = $('.uiModalContent').closest('form').find('[data-val]');
if ($elemens.length) {
doSomething();
}
我在我的表单验证中使用这个:
// CHECK REQUIRED
$.fn.required = function(){
return $(this).data('required') == '';
}
返回真或假,您可以返回值。像这样使用:
var required = $('input').required();
if( required ) // Do something
所以在你的例子中需要更改为val
<input data-val="value">
希望有帮助
try
var boolFlag=false;
$('.uiModalContent').closest('form')
.find('input, textarea').filter(function(){
$.each($(this),function(k,v){
if($(v).data('val')) boolFlag=true;
});
});
if(boolFlag) {
$.validator.unobtrusive.parseDynamicContent('.uiModalContent');
}
http://jsfiddle.net/JHreW/15/