Jquery 验证插件 (.validate) 在动态表单(循环表单)中不起作用
Jquery Validation Plugin (.validate) is not working in Dynamic Form(loop form)
我正在使用 Jquery 验证插件来验证动态 Form.I 我收到了想要的错误消息,但主要问题是必填字段是否为空,无论提交按钮的状态如何作品。如果必填字段为空,我无法停止提交。这是我的一小段代码。
HTML:
<form class="pa-form" action="confirmed" method="post" id="my-form">
<fieldset>
<?php for($i=1;$i<=3;$i++){ ?>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[first_name][]" class="firstname form-control" type="text" id="first-name<?=$i?>" required placeholder="First name" spellcheck="false">
</div>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[last_name][]" class="firstname form-control" type="text" id="last-name<?=$i?>" required placeholder="Last name" spellcheck="false">
</div>
<br>
<?php };?>
<div class="btn-holder">
<input type="submit" id="submitBtn" class="btn btn-default text-uppercase" value="Confirm">
</div>
</fieldset>
</form>
Js:
$("#my-form").validate({
validClass: "valid",
errorClass: "error",
rules: {
'myForm[first_name][]': "required",
'myForm[last_name][]': "required",
},
messages: {
'myForm[first_name][]': "First name is required",
'myForm[last_name][]': "Last name is required",
}
}
});
jquery-validate
要求每个元素都有一个唯一的名称。所以将 for
循环索引放入名称中。
<?php for($i=1;$i<=3;$i++){ ?>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[first_name][<?=$i?>]" class="firstname form-control" type="text" id="first-name<?=$i?>" required placeholder="First name" spellcheck="false">
</div>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[last_name][<?=$i?>]" class="firstname form-control" type="text" id="last-name<?=$i?>" required placeholder="Last name" spellcheck="false">
</div>
<br>
<?php };?>
您不需要在rules
中专门列出元素,因为插件会自动处理元素中的required
属性。但如果你愿意,你可以这样做:
var rules = {}, messages = {};
for (var i = 1; i <= 3; i++) {
rules['myForm[firstname][' + i + ']'] = 'required';
messages['myForm[firstname][' + i + ']'] = 'First name is required';
rules['myForm[lastname][' + i + ']'] = 'required';
messages['myForm[lastname][' + i + ']'] = 'Last name is required';
}
$("#my-form").validate({
validClass: "valid",
errorClass: "error",
rules: rules,
messages: messages
}
});
我正在使用 Jquery 验证插件来验证动态 Form.I 我收到了想要的错误消息,但主要问题是必填字段是否为空,无论提交按钮的状态如何作品。如果必填字段为空,我无法停止提交。这是我的一小段代码。
HTML:
<form class="pa-form" action="confirmed" method="post" id="my-form">
<fieldset>
<?php for($i=1;$i<=3;$i++){ ?>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[first_name][]" class="firstname form-control" type="text" id="first-name<?=$i?>" required placeholder="First name" spellcheck="false">
</div>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[last_name][]" class="firstname form-control" type="text" id="last-name<?=$i?>" required placeholder="Last name" spellcheck="false">
</div>
<br>
<?php };?>
<div class="btn-holder">
<input type="submit" id="submitBtn" class="btn btn-default text-uppercase" value="Confirm">
</div>
</fieldset>
</form>
Js:
$("#my-form").validate({
validClass: "valid",
errorClass: "error",
rules: {
'myForm[first_name][]': "required",
'myForm[last_name][]': "required",
},
messages: {
'myForm[first_name][]': "First name is required",
'myForm[last_name][]': "Last name is required",
}
}
});
jquery-validate
要求每个元素都有一个唯一的名称。所以将 for
循环索引放入名称中。
<?php for($i=1;$i<=3;$i++){ ?>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[first_name][<?=$i?>]" class="firstname form-control" type="text" id="first-name<?=$i?>" required placeholder="First name" spellcheck="false">
</div>
<div class="flabel-control">
<input data-toggle="floatLabel" data-value="" name="myForm[last_name][<?=$i?>]" class="firstname form-control" type="text" id="last-name<?=$i?>" required placeholder="Last name" spellcheck="false">
</div>
<br>
<?php };?>
您不需要在rules
中专门列出元素,因为插件会自动处理元素中的required
属性。但如果你愿意,你可以这样做:
var rules = {}, messages = {};
for (var i = 1; i <= 3; i++) {
rules['myForm[firstname][' + i + ']'] = 'required';
messages['myForm[firstname][' + i + ']'] = 'First name is required';
rules['myForm[lastname][' + i + ']'] = 'required';
messages['myForm[lastname][' + i + ']'] = 'Last name is required';
}
$("#my-form").validate({
validClass: "valid",
errorClass: "error",
rules: rules,
messages: messages
}
});