Javascript jQuery';s val()在引导popover输入字段上返回空字符串

Javascript jQuery';s val()在引导popover输入字段上返回空字符串,javascript,jquery,html,twitter-bootstrap,Javascript,Jquery,Html,Twitter Bootstrap,我有一个带有几个输入字段的引导弹出表单。我在表单中添加了一个提交按钮,它触发客户端JS验证。但是,当单击按钮时,jQuery的val()方法不会捕获输入字段的当前值:我只得到一个空字符串 以下是标记: <div class="popover fade right in" style="top: -154.5px; left: 249px; display: block;"> <div class="arrow"> </div> <

我有一个带有几个输入字段的引导弹出表单。我在表单中添加了一个提交按钮,它触发客户端JS验证。但是,当单击按钮时,jQuery的val()方法不会捕获输入字段的当前值:我只得到一个空字符串

以下是标记:

<div class="popover fade right in" style="top: -154.5px; left: 249px; display: block;">
    <div class="arrow">
    </div>
    <h3 class="popover-title">New Job Site contact</h3>
    <div class="popover-content">
        <form class="popover-form form-horizontal" id="newjobsite_contact_form" accept-charset="utf-8" method="post" action="http://dev.temperature/home/#">
            <div class="form-group">
                <div class=" required ">
                    <input type="text" class="form-control" id="popover-first_name" required="1" placeholder="First name" value="" name="first_name">
                </div>
                <div class=" required ">
                    <input type="text" class="form-control" required="1" placeholder="Surname" value="" name="surname">
                </div>
                <div class=" required ">
                    <input type="text" class="form-control" required="1" placeholder="Phone" value="" name="phone">
                </div>
                <div class="">
                    <input type="text" class="form-control" placeholder="Mobile" value="" name="mobile">
                </div>
                <div class="">
                    <input type="email" class="form-control" placeholder="Email" value="" name="email">
                </div>
                <div class="">
                    <input type="url" class="form-control" placeholder="Website" value="" name="website">
                </div>
            </div>
            <div class="popover_buttons">
                <button class="btn btn-success" onclick="submit_newjobsite_contact(); return false;" type="button" id="newjobsite_contact_submit">Submit</button>
                <button class="btn btn-warning" onclick="close_newjobsite_contact(); return false;" type="button" id="newjobsite_contact_cancel">Cancel</button>
            </div>
        </form>
    </div>
</div>
我做错了什么?jQuery正在正确检索这些输入字段的所有其他属性,而不是我在其中键入文本后的值

form_element.find('select,input').each(function(key, item) {
        if ($(item).attr('required') && $(item).val().length == 0) {
            found_error = true;
            found_errors.push({elementname: $(item).attr('name'), message: "A value for "+$(item).attr('placeholder')+" is required"});
        }
我将其修改为:

    form_element.find('select,input').each(function(key, item) {
            if ($(this).data('required') == '1' && $(this).val().length == 0) {
                found_error = true;
                found_errors.push({elementname: $(this).attr('name'), message: "A value for "+$(this).attr('placeholder')+" is required"});
}
尝试使用数据属性,而不是使用
required=“1”
使用
datarequired=“1”


因此,您的输入应如下所示:

<input type="text" class="form-control" data-required="1" placeholder="Surname" value="" name="surname">


在这里找不到这个问题的答案,因为我没有发布整个源JS,它太大了。真正发生的事情是,我意外地克隆了popover表单,导致输入字段重复。

对不起,这不是问题所在。我使用此表单的输入来提交AJAX请求。正如您在按钮的onclick事件处理程序中所看到的,它被设置为返回false,因此可以防止正常的提交事件。我想捕获这些输入,在客户端验证它们,然后通过POST将它们发送到PHP函数。@Nicolasconneult也许你想重新检查你输入的内容,我不认为你的提交有
返回false但已取消。我也没有看到ajax。无论如何,我会为您的validate\u popover\u提供一个替代解决方案。如果您是正确的,我在这里复制代码时犯了一个错误。但这并没有改变问题。我删除了AJAX调用,因为它与这里的问题无关。无论输入值是多少,验证都会失败,因此AJAX代码永远不会运行。@NicolasConnault更新了答案。看看它是否能起作用。不,对不起,这不能解决实际问题。“必需”条件按预期工作,使用您的代码或我的代码。val()方法无法按预期工作(验证代码中的第二个条件)
$(item).val()
只返回一个空字符串,即使该输入中有文本。我甚至在元素中添加了一个唯一的ID,并将其用作jquery选择器进行测试:仍然没有值。奇怪的是,当我将它放入一个中时,它可以正常工作,但在我自己的页面上不起作用。我猜bootstrap的popover JS在某种程度上搞乱了jquery。哦,伙计们,我也犯了同样的错误,我花了一段时间才发现我克隆了表单!你的回答帮助了我!谢谢
<input type="text" class="form-control" required="1" placeholder="Surname" value="" name="surname">
<input type="text" class="form-control" data-required="1" placeholder="Surname" value="" name="surname">