我正在制作表单并使用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');
}
这是正常的,除非用户例如选中/取消选中最后的复选框,因为它不是输入字段。
我想检查提交按钮状态,例如(keyUp / check / select选择框的任何选项)。这样,无论用户选中/取消选中复选框,选择一个选项或在末尾模糊文本字段。你有什么主意吗?
我的意思是以任何方式“实时”检查整个表单的状态,并在一切正确时启用提交表单。
非常感谢!!
答案 0 :(得分:0)
复选框不是输入字段?或者你的意思是select
不是输入字段?从技术上讲,它们都不是textarea
,所以如果您有其中一个,那么它也需要更改选择器。
无论如何,blur
可能不是正确的事件。如果checkbox
技术上从未通过浏览器获得焦点,那么它将永远不会模糊。然而,它会改变。并且通常可以安全地假设表单的验证状态只能在表单元素更改时受到影响。 (它可以在没有模糊的情况下改变,并且可以在不改变的情况下模糊。)
因此请尝试使用change
事件:
$("input, select, textarea").not("#submit").change(function() {
// validation logic, enabling or disabling a button
});
答案 1 :(得分:0)
您的:input选择器没问题。对于change
事件而不是blur
,您将获得更好的运气。某些浏览器中的复选框和单选按钮上的blur
事件doesn't fire。
$(":input").not("#submit").change(function() {
// code here
});
答案 2 :(得分:0)
最后,我决定使用点击提交。这不是我想要的,但那是最好的选择。当启用或禁用提交按钮时,我喜欢区别但是我决定选择该选项,因为它的效果肯定更好。再次感谢大家。 最好的问候