我正在制作一个表单并使用JQuery进行验证。在验证结束时,我输入了代码:
$(":input").not("#submit").blur(function() {
if(!$(":input").hasClass('invalido') && !$(":input").hasClass('unset') && $("#politica").is(':checked')){
$('#submit').removeAttr('disabled');
$('#submit').css('backgroundColor', 'rgb(226, 1, 122)');
$('#submit').attr('value', 'enviar');
}else{
$('#submit').attr('disabled', 'disabled');
$('#submit').css('backgroundColor', 'rgb(237, 141, 177)');
$('#submit').attr('value', 'enviar se activará al validar todos los campos');
}
这工作正常,除非用户例如选中/取消选中最后的复选框,因为它不是输入字段。
我想用类似的东西检查提交按钮状态(键向上/选中/选择选择框的任何选项)。这样,无论用户是选中/取消选中复选框、选择一个选项还是模糊末尾的文本字段。你有什么想法吗?
我的意思是任何"实时"检查整个表单状态的方法,并在一切正常时启用提交表单。
谢谢!!
复选框不是输入字段? 或者您的意思是select
不是输入字段? 从技术上讲,两者都不是textarea
,所以如果你有其中一个,它也需要更改选择器。
无论如何,也许blur
不是正确的事件。 如果checkbox
在技术上永远不会被浏览器聚焦,那么它永远不会模糊。 然而,它会改变。 通常可以安全地假设表单的验证状态只有在表单元素更改时才会受到影响。 (它可以在不模糊的情况下更改,也可以在不更改的情况下模糊。
因此,请尝试改用 change
事件:
$("input, select, textarea").not("#submit").change(function() {
// validation logic, enabling or disabling a button
});
你的 :input 选择器很好。您将在change
事件中获得更好的运气,而不是blur
.blur
事件不会在某些浏览器中的复选框和单选按钮上触发。
$(":input").not("#submit").change(function() {
// code here
});
最后,我决定使用点击提交。这不是我想要的,但这是最好的选择。我想在启用或禁用提交按钮时有所不同,但我决定选择该选项,因为它肯定效果更好。再次感谢大家。此致敬意