我有一个包含多个文本字段的表单,我希望在填写必填字段时启用添加按钮。默认情况下,HTML中的按钮处于禁用状态。在Firebug中,似乎模糊函数会触发,但if语句未达到。
$(".cd-form :input").blur(function(){
var ok=true;
$("#signup-firstnmame,#signup-surname","#signup-Address1","#signup-City","#signup-Postcode","#signup-Email","#signup-Mobile").each(function(){
/* if ($(this).val()==="")*/
if ($('#signup-firstnmame').val() !== "" && $('#signup-surname').val() !== "" && $('#signup-Address1').val() !== "" && $('#signup-City').val() !== "" && $('#signup-Postcode').val() !== "" && $('#signup-Email').val() !== "" && $('#signup-Mobile').val() !== "")
$("#AddData").prop("disabled",false);
else
$("#AddData").prop("disabled",true);
});
});
答案 0 :(得分:1)
逗号应该是选择器的一部分,而不是单独的参数。
$('#signup-firstname, #signup-surname, #signup-Address1, ...
另外,如果您正在检查所有字段(如if语句中),则不需要为每个字段执行一次,只需执行一次。
如果您考虑在相关字段中添加一个类,您的函数将更具可读性,即:
$('#AddData').prop('disabled', $('.required-field[val=""]').length > 0);
答案 1 :(得分:0)
首先,我认为将一个独特的类添加到您关心的输入中会很聪明。这样你就可以按照以下方式做点什么:
$('.yourClass').on('input', function() {
var x = true;
$('.yourClass').each(function() {
this = $(this); //cast it to jQuery obj (ez ref)
if (this.val() == "")
x = false;
} );
} );
基本上,每当有人在字段中输入内容时,jQuery将遍历您的输入,检查值并将x添加1。如果x等于您正在检查的元素数,则它将启用该按钮。
这不是最优雅的解决方案,但是当我匆忙完成一个项目时,我是如何解决你所遇到的那个问题。
使用@JaredT提到的关于布尔值的内容修改了我的答案,更加优雅。我相信这可以进一步改善,希望这会让球滚滚而来。