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

标签 javascript jquery html forms blur

我有这个几乎可以工作的位:http://jsfiddle.net/HFzkW/ 我的代码如下所示:

<div id="cform-container">
<div class="alignleft" id="cform">
    <form action="<?php print site_url('/sent'); ?>" method="POST" >
    <input type="hidden" name="Contact-Form" value="contact-form" />
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="yn">Your Name</label><span id="star5">*</span></div>
            <div class="alignright cform-ti"><input type="text" name="yn" id="yn" /><br /><span id="namespan" value="0"></span></div>
            <div class="clearboth"></div>
        </div>
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="cn">Company Name</label></div>
            <div class="alignright cform-ti"><input type="text" name="cn" id="cn" /></div>
            <div class="clearboth"></div>
        </div>
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="em">Email Address</label><span id="star5">*</span></div>
            <div class="alignright cform-ti"><input type="text" name="em" id="em" /><br /><span id="emailspan" value="0"></span></div>
            <div class="clearboth"></div>
        </div>
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="ph">Phone Number</label><span id="star5">*</span></div>
            <div class="alignright cform-ti"><input type="text" name="ph" id="ph" /><br /><span id="phonespan" value="0"></span></div>
            <div class="clearboth"></div>
        </div>
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="ct">Industry</label></div>
            <div class="alignright cform-ti"><input type="text" name="ct" id="ct" /></div>
            <div class="clearboth"></div>
        </div>
        <div class="cform-row">
            <div class="alignleft cform-label"><label for="msg">Message</label></div>
            <div class="alignright cform-ti"><textarea name="msg" id="msg"></textarea></div>
            <div class="clearboth"></div>
        </div>
        <div id="cform-btn"><input type="submit" value="Submit" /></div>
    </form>
</div>
<script id="source" language="javascript" type="text/javascript">
 $(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('<font color="#cc0000">Please enter valid Email address</font>');
             }else{
                $("#emailspan").html('<font color="#cc0000"></font>');  
                }
            });
    $("#yn").blur(function() 
            {
             var namefield = $("#yn").val();
             if(namefield=="") {
                $("#namespan").html('<font color="#cc0000">Please enter your name</font>');  
             }else{
                $("#namespan").html('<font color="#cc0000"></font>');  
                }
            });                                 
    $("#ph").blur(function() 
            {
             var phonefield = $("#ph").val();
             if(phonefield=="") {
                $("#phonespan").html('<font color="#cc0000">Please enter your name</font>');  
             }else{
                $("#phonespan").html('<font color="#cc0000"></font>');  
                }
            });
$('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 网站上无效。任何检查的想法也将不胜感激。

最佳答案

尝试将 ands 切换为 ors。小心你的逻辑,试着大声说出来,看看它是否有意义:

电子邮件为空,姓名为空,电话为空,则验证为假。您真正想要的是说,如果任何字段为空,则验证为假。

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) {

关于Javascript - 禁用提交按钮,直到 3 个字段不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157763/

相关文章:

javascript - 谷歌浏览器扩展程序

javascript - 如何检查日期是否在 30 天内?

javascript - 为什么一个简单的 &lt;script src ="..."> &lt;/script&gt; 不起作用?

javascript - 将自定义图标添加到谷歌地图附近的地方第 2 部分

javascript - TinySort <li> 基于类的项目

jquery - 简单的图像 slider 不起作用

css - 让 div 从内联移动到与媒体查询堆叠

javascript - 删除大于 .. 数字的数组项

javascript - mongodb 在子文档中使用 $pop

Javascript 引用文本 slider 有两组