javascript - 如何在不同名称的输入中使用 jQuery 验证插件?

标签 javascript jquery

我在输入中使用不同的名称! 单击表单中的提交后,所有错误都显示<label for="passenger"></label>

如何分开?

例如:您选择了一家酒店的三个房间。

lenHotel = 3;号码已更改。

添加脚本:

<script src="../lib/jquery.js"></script>
<script src="../dist/jquery.validate.js"></script>

script是:

for(var i = 1; i <= lenHotel; i++) {
  $("#Step-02").find('#information-box').append(
    "<div class='box-content'>" +
    "<div class='field-row clearfix'>" +
        "<label for='passenger'></label> " +
        "<input id='passenger' name='passenger_" + i +"' required type='text'> " +
    "</div>" +
    "<div class='field-row clearfix'> " +
        "<div class='col-xs-6'> " +
            "<select id='country' name='country_" + i + "'> "+
                "<option value='1'>Country name</option>" +
                "<option value='2'>Country Name</option>" +
            "</select>" +
        "</div>" +
    "</div>" +
  "</div>"
 ); 
}

打印后,HTML 为:

<div class="box-content">
<div class="field-row clearfix">
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_1" required="" type="text">
</div>
<div class="field-row clearfix">
    <div class="col-xs-6">
        <select id="p-status" name="country_1">
            <option value="1">Country name</option>
            <option value="2">Country name</option>
        </select>
    </div>
</div>
</div>
<div class="box-content">
<div class="field-row clearfix">
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_2" required="" type="text">
</div>
<div class="field-row clearfix">
    <div class="col-xs-6">
        <select id="p-status" name="country_2">
            <option value="1">Country name</option>
            <option value="2">Country name</option>
        </select>
    </div>
</div>
</div>
<div class="box-content">
<div class="field-row clearfix">
    <label for="passenger"></label> 
    <input id="passenger" name="passenger_3" required="" type="text">
</div>
<div class="field-row clearfix">
    <div class="col-xs-6">
        <select id="p-status" name="country_3">
            <option value="1">Country name</option>
            <option value="2">Country name</option>
        </select>
    </div>
</div>
</div>

此验证函数:

$().ready(function() {
// validate the form when it is submitted
var validator = $("#form_sample_1").validate({
    errorPlacement: function(error, element) {
        // Append error within linked label
        $(element).closest("form").find("label[for='" +
            element.attr("id") + "']").append(error);
        console.log(error);
    },
    errorElement: "span",
    messages: {
        passenger: {
            required: "Required",
            minlength: "Your passenger name must be at least 5 characters"
        }
    }
});
});

最佳答案

问题是,您在这里进行概括,并且对多个元素使用相同的 id:

$(element).closest("form").find("label[for='" + element.attr("id") + "']").append(error);

因此您需要将其更改为与该元素相关的内容。另外,您似乎在复制 id,这是一种犯罪行为。

passengerid 更改为 passenger_1passenger_2...等等应该可以。

"<div class='field-row clearfix'>" +
    "<label for='passenger_" + i +"'></label> " +
    "<input id='passenger_" + i +"' name='passenger_" + i +"' required type='text'> " +
"</div>" +

关于javascript - 如何在不同名称的输入中使用 jQuery 验证插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39949197/

相关文章:

javascript - 在完整函数中访问变量

javascript - 有谁知道可以创建关联数组的 Javascript .csv 文件读取器?

javascript - dc/crossfilter 行图表对提供图表的数据进行排序

css - JQuery load() 函数禁用链接和 :hover effects?

javascript - 如何根据列值在每行上显示复选框 - JQuery DataTable

jquery - 带有弹出窗口的 jQuery 垂直 slider 中的溢出隐藏问题

javascript - Firefox 不应该执行 JavaScript

javascript - 提取当前 DOM 并将其打印为字符串,样式保持不变

javascript - 循环内的 Http 请求

jquery datatables actionlink如何添加