Javascript – 禁用提交按钮,直到3个字段不为空

我有这个几乎工作的位: http : //jsfiddle.net/HFzkW/我的代码看起来像这样:

<form action="" method="POST" >
*

*

*

$(function(){ $("input[type=submit]").attr("disabled", "disabled"); $("#em").blur(function() { var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; var emailaddress = $("#em").val(); if(!emailReg.test(emailaddress) | emailaddress=="") { $("#emailspan").html('Please enter valid Email address'); }else{ $("#emailspan").html(''); } }); $("#yn").blur(function() { var namefield = $("#yn").val(); if(namefield=="") { $("#namespan").html('Please enter your name'); }else{ $("#namespan").html(''); } }); $("#ph").blur(function() { var phonefield = $("#ph").val(); if(phonefield=="") { $("#phonespan").html('Please enter your name'); }else{ $("#phonespan").html(''); } }); $('input, textarea').change(function(){ var validation; var email = $("#em").val(); var name = $("#yn").val(); var phone = $("#ph").val(); if ( email == "" && name == "" && phone == "" ) { validation = false; } else if ( email != "" && name != "" && phone != "" ) { alert ("variables"+email+name+phone); validation = true; } if (validation = true) { $("input[type=submit]").removeAttr("disabled"); } else { $("input[type=submit]").attr("disabled", "disabled"); } }); });

但是我不能让它完全发挥作用。 当用户输入其中一个字段(例如您的姓名)时,不再禁用“提交”按钮。

我希望禁用“提交”按钮,直到满足所有3个“必需”字段。 我认为代码很清楚 – 但它仍然无法正常工作。

此外,它在JSFiddle中工作,但不是在我试图让它工作的Wordpress网站上工作。 任何检查的想法也将受到赞赏。

尝试切换到ors。 小心你的逻辑并试着大声说出它是否有意义:

电子邮件为空白且名称为空白且电话为空,则validation为空。 你真正想要的是说如果任何字段是空白的,validation是错误的。

 if ( email == "" || name == "" || phone == "" ) { validation = false; } else if ( email != "" && name != "" && phone != "" ) { alert ("variables"+email+name+phone); validation = true; } 

此外,您在if语句中设置validation=true 。 这将永远返回true。 更改为: if (validation == true) {

从我所看到的,我将要做的第一件事就是调试这个(代码有点令人困惑,所以而不是复制它,我会给你一些指导)。

代替

  if(validation = true ) 

尝试

  if(validation) 

这是因为没有任何参数,它将检查不是false,undefined或null。 电子邮件名称和电话可能也是如此。

所以基本上:

 

 function submitButton(formID){ var formObject = document.getElementById(formID); var name = formObject.name.value; var email = formObject.email.value; var phone = formObject.phone.value; if (name && email && phone) { showSubmitButton(); } else { //keep the button hidden } }