在运行已更改这些属性的函数后,使用特定属性计算当前输入数
与此问题相关: 使用jQuery,保持表单的提交按钮被禁用,直到所有必需的textbox,radio,checkbox元素都有值(或被选中)
我非常友好地帮助整合了这个function
$('input[type=submit]').prop('disabled', true).addClass('disabled'); var required = $('[required]'); required.bind('change keyup', function() { var flag = 0; required.each(function() { if ($(this).not(':checkbox, :radio').val() || $(this).filter(':checked').val()) { flag++; } }); if (flag == required.length) { $('input[type=submit]').prop('disabled', false).removeClass('disabled'); } else { $('input[type=submit]').prop('disabled', true).addClass('disabled'); } });
这里发生的是表单的提交按钮保持禁用状态,直到所有具有“required”属性的字段具有某种值(或已经检查过等)。
作为更大图片的一部分,另一个jQuery函数(工作正常)隐藏了一些这些字段,具体取决于选择框的值。
实际上,当隐藏这些字段时,应删除所需的属性。 删除所需的属性后,我希望上面的函数只计算剩余的必需字段(required.length),但事实上,它计算所有这些字段 – 即使是那些不再具有必需属性的字段。
在这方面的任何想法?
您正在反复比较同一组元素。 您需要在每次检查时重新选择所需的那些。
更改
required.each(function()
至
$([required]).each(function()
您正在选择所有元素,然后循环遍历它们,无论它们现在具有哪些属性。 您希望让jQuery重新选择现在具有required
属性的元素,以便获得更新列表。 然后应该按预期执行。
你不仅要删除required
属性,还要删除此元素的.unbind('change keyup')
2。使用required = required.not('[required]');
将其从集合中删除required = required.not('[required]');
这个小提琴给出了基本的想法:在你点击按钮之前,两个必需的输入提醒他们的号码,点击它之后,总长度减少,第二个输入停止提醒
如果再次需要change keyup
请不要忘记绑定change keyup
你可以加:
|| $(this).css('display') === 'none')
到if周围的标志++。