javascript - Jquery .parent 在 DOM 中走得太远

标签 javascript php jquery html

我正在尝试创建一个动态联系表单错误检查脚本...一切正常,除了当我尝试更改输入字段正上方的 html 元素的类时...这是我的代码:

<div class="container">
                <div class="row">
                    <div class="col-sm-4">
                        <h4>Address:</h4>
                        <address>
                            <p>
                                Plot 12<br>
                                Ogudu Phase 2 <br>
                                Ogudu Lagos <br>
                                <a href="mailto:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dcb1bdaeb7b9a8b5b2bb9cbea9afb5b2b9afafacb0a9afb2bbf2bfb3b1" rel="noreferrer noopener nofollow">[email protected]</a>"><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="523f33203937263b3c35123027213b3c372121223e27213c357c313d3f" rel="noreferrer noopener nofollow">[email protected]</a></a>
                            </p>
                        </address>
                    </div>
                    <form method="post" id="contactform" class="form-minimal">
                        <div class="col-sm-4"> 
                            <div class="form-group">
                                <label for="name">Name</label>
                                <input type="text" class="form-control" name="name" id="name" placeholder="Enter name"  title="Please enter your name (at least 2 characters)"/>
                                <div class="form-line"></div>
                            </div>

                            <div class="form-group">
                                <label for="email">Email</label>
                                <input type="email" class="form-control" name="email" id="email" placeholder="Enter email" title="Please enter a valid email address"/>
                                <div class="form-line"></div>
                            </div>

                            <div class="form-group">
                                <label for="phone">Phone</label>
                                <input name="phone" class="form-control required digits" type="tel" id="phone" size="30" value="" placeholder="Enter email phone" title="Please enter a valid phone number (at least 10 characters)">
                                <div class="form-line"></div>
                            </div>

                        </div>
                        <div class="col-sm-4">
                            <div class="form-group">
                                <label for="comments">Your Brief</label>
                                <textarea name="comment" class="form-control" id="comments" cols="3" rows="5" placeholder="Enter your message…" title="Please enter your message (at least 10 characters)"></textarea>
                                <div class="form-line"></div>
                            </div>


                        </div>                        
                        <div class="col-md-8 col-md-offset-4">
                            <button name="submit" type="submit" class="btn large primary" id="submit"> Submit</button>
                            <div class="result"></div>
                        </div>
                    </form>

这是我的 JavaScript 代码

var form = $("#contactform");
var submit= $("#submit");
var name =$("#name");
var email =$("#email");
var comments =$("#comments");
form.submit(function(e) {
    e.preventDefault();
if($("input#name").val().length < 10)
    {
        $(this).parent(".form-group").addClass("has-error");
    }
    else
    {
        submit.addClass("disabled").html("Please wait");
        $.post("email.php",form.serialize(),"text")
        .done(function(data){
            submit.removeClass("disabled").html("Mail Sent");
            alert(data);
        })
        .fail(function(data)
        {   submit.removeClass("disabled").html("Mail Failed");
        });
    }
});

所以基本上当我调用 .parent().addClass() 时...它一直到地址列上方的行 div...我如何修复它以直接位于名称输入元素上方(即父表单组div)

非常感谢任何帮助

最佳答案

$(this)您在表单提交函数中引用的是表单 $("#contactform")本身,而不是 $("input#name") 。因此$(this).parent()引用 <div class="row"> .

实现您想要做的事情的一种方法是 $(this).find("input#name").parent(".form-group").addClass("has-error");

关于javascript - Jquery .parent 在 DOM 中走得太远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040505/

相关文章:

javascript - Knockout JS - 单击加载所选项目的模式编辑表单

javascript - 使用新的 CSS 文件覆盖当前网站的

javascript - 带有选项和可访问方法的 jQuery 插件模板?

javascript - Grunt、Compass、Foundation(foundationpress wordpress 主题)

javascript - 如何在这篇文章中创建全局变量?

php - 哪个更快?

php - Codeigniter 在自定义库中设置常量

jquery - 无法使用 Chrome 加载 @font-face,jquery 出错?

javascript - 如何在 Postback 上维护 UI 元素状态? (ASP.NET MVC)

javascript - 尝试使用 TypeScript 为简单的导航栏实现面向对象的设计模型