0

我有一个分几个部分的表格。当用户填写表格时,我想在他们完成时将每个部分标记为已完成。

要完成,所有必填字段必须通过客户端验证。

不需要验证的字段具有“忽略”类。

通过验证的字段具有由验证代码添加的类“成功”。

所以我想检查一个给定的表单部分是否有任何没有“忽略”或“成功”作为类的表单元素。如果有任何此类元素,则该部分不完整。

这是我的代码:

$('.form-section input, .form-section select, .form-section textarea').blur(function() {

    //get containing form section
    formSection = $(this).closest('.form-section');
    //Check for any inputs, selects and textareas that don't have "ignore" or "success"  as a class
    sectionCheck = $(formSection).find('input,select,textarea').not('.ignore','.success').length;
    if(sectionCheck > 0) {alert('not done yet');}
    else{alert('section complete');}    
});

它适用于静态 HTML。但在实时代码中,它看不到“成功”类,因为该类是动态添加的。

我想我需要以某种方式使用 on() 方法,但不确定如何使用,因为问题不在于 blur() 事件。

谢谢你的帮助!

4

4 回答 4

1

何时在字段上进行验证?因为如果验证发生在模糊事件之后,您将无法检测到“成功”类的添加

于 2013-05-14T18:21:02.677 回答
0

尝试添加一个类dynamic,然后在获得结果时将其过滤掉。

于 2013-05-14T18:15:18.930 回答
0

我想你想做这样的事情

小提琴

您将不得不假设每个字段都不好,并且有一些东西可以验证每个相关字段,因为它是“模糊的”。但是,当触摸/修饰相关元素时,您应该将其标记为脏,以便重新验证

.on('focus', 'input,select,textarea', function () {
    //mark dirty on focus
    ...
}) 
.on('blur', 'input,select,textarea', function () {
    // validate on blur
    ...
});
于 2013-05-14T19:21:59.490 回答
0

事实证明,我在实时站点中使用的是旧版本的代码,并且在 jQuery 中有一个错字。我错误地格式化了“not()”语句。

sectionCheck = $(formSection).find('input,select,textarea').not('.ignore','.success').length;

本来应该:

sectionCheck = $(formSection).find('input,select,textarea').not('.ignore,.success').length;

现在它工作正常。

感谢所有回答的人。

于 2013-05-14T23:26:17.353 回答