javascript - JQUERY 表单验证无法正常工作

标签 javascript jquery

基本上,当我在文本区域或文本框中键入内容时,跨度应该显示,直到制定标准为止。

只有当所有三个都经过验证时,提交按钮才应“保存”show()。

然而,发生的一切是当我开始在其中写入时显示前两个文本框跨度(但不是从焦点),但在满足条件时不会消失

       <div id="add">
        <div id="close"></div>


            <form action="" method="POST">
                <div id="name">
                    Name:<span>Please Enter Full Name</span>
                    <br/>
                    <input type="text" name="name" id="textbox">
                </div>
                <div id="company">
                    Company<span>Please Enter Company Name</span>
                    <br/>
                    <input type="text" name="company" id="textbox1">
                </div>
                <div id="review">
                    Review<span>Please Enter Review</span>
                    <br/>
                    <textarea name="comment"></textarea>
                </div>
                <div id="save">
                    <input type="submit" name="submit">
                </div>
            </form>
        </div>




        //...START OF ADDBOX
                $('span').hide();
                $('#save').hide();

                $nameText = $('#name');
                $companyText = $('#company');
                $commentText = $('#comment');


                function nameValid() {
                    if ($nameText.val().length < 5) {
                        $('#name span').show();
                    } else {
                        $('#name span').hide();
                    }
                }

                function companyValid() {
                    if ($companyText.val().length < 3) {
                        $('#company span').show();
                    } else {
                        $('#company span').hide();
                    }
                }

                function commentValid() {
                    if ($commentText.val().length < 1) {
                        $('#review span').show();
                    } else {

                        $('#review span').hide();
                    }

                }

                $nameText.focus(nameValid).keyup(nameValid).keyup(save);
                $companyText.focus(companyValid).keyup(companyValid).keyup(save);
                $commentText.focus(commentValid).keyup(commentValid).keyup(save);


                function save() {
                    if ($commentText.val().length > 0 && $companyText.val().length > 2 && $nameText.val().length > 4) {
                        $('#save').show();
                    } else {
                        $('#save').hide();
                    }


                }

http://jsfiddle.net/opfczh69/这里是 js-fiddle

最佳答案

您正在使用名称而不是它们的id来引用文本框,因此它与任何内容都不匹配。

您需要将它们引用为#textbox、#textbox1、#comment,并为评论框指定一个id:

$('span').hide();
$('#save').hide();

$nameText = $('#textbox');
$companyText = $('#textbox1');
$commentText = $('#comment');


function nameValid() {
    if ($nameText.val().length < 5) {
        $('#name span').show();
    } else {
        $('#name span').hide();
    }
}

function companyValid() {
    if ($companyText.val().length < 3) {
        $('#company span').show();
    } else {
        $('#company span').hide();
    }
}

function commentValid() {
    if ($commentText.val().length < 1) {
        $('#review span').show();
    } else {
        
        $('#review span').hide();
    }
    
}

$nameText.focus(nameValid).keyup(nameValid).keyup(save);
$companyText.focus(companyValid).keyup(companyValid).keyup(save);
$commentText.focus(commentValid).keyup(commentValid).keyup(save);


function save() {
    if ($commentText.val().length > 0 && $companyText.val().length > 2 && $nameText.val().length > 4) {
        $('#save').show();
    } else {
        $('#save').hide();
    }
    
    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="add">
            <div id="close"></div>
               
                
                <form action="" method="POST">
                    <div id="name">
                        Name:<span>Please Enter Full Name</span>
                        <br/>
                        <input type="text" name="name" id="textbox">
                    </div>
                    <div id="company">
                        Company<span>Please Enter Company Name</span>
                        <br/>
                        <input type="text" name="company" id="textbox1">
                    </div>
                    <div id="review">
                        Review<span>Please Enter Review</span>
                        <br/>
                        <textarea name="comment" id="comment"></textarea>
                    </div>
                    <div id="save">
                        <input type="submit" name="submit">
                    </div>
                </form>
            </div>

Updated Fiddle

关于javascript - JQUERY 表单验证无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27069551/

相关文章:

javascript - 我们如何将文本框值设置为下拉列表?

javascript - 由于 CORS 问题,通过浏览器的 JS-IPFS http 客户端失败

jquery - 当 jQuery 在 IE 中移动它时,为什么我的 DIV 会剪辑它的子 DIV?

javascript - 如何控制Chrome中JavaScript的错误显示,例如404错误?

javascript - 从 Controller 访问 ng-model 未定义

javascript - 使子导航向下滑动和向上滑动切换

javascript - jQuery POST 输入中的单选功能

jquery - 编辑在另一个可调整大小的 div 中放置一个小 div,而不影响容器的内容

javascript - 如何获取文本框中新输入的值

jquery - 在 Jquery 中使用 .each 进行延迟循环