[英]Validate form elements generated from php loop in jquery javascript
Hello i have problem for stopping form submission here. 您好,我在此处停止提交表单时遇到问题。
My form has unlimited text fields, i mean sometimes can be zero, one, three .. n number 我的表单具有无限文本字段,我的意思是有时可以是零,一,三.. n号
Here is code 这是代码
<?php
$adultsNum = 3; $childNum = 2;
$countPeople = 1;
?>
<form action="./show.php" method="post" onsubmit="return checkFrom();">
<?php for ($i = 0; $i < $adultsNum; $i++) { ?>
<div class="person adult">
<input type="hidden" id="adult<?=$countPeople;?>">
<input type="text" name="fnameAdult[]" id="fnameAdult">
<input type="text" name="lnameAdult[]" id="lnameAdult">
</div>
<?php $countPeople++; } ?>
<?php for ($j = 0; $j < $childNum; $j++) { ?>
<div class="person child">
<input type="hidden" id="child<?=$countPeople;?>">
<input type="text" name="fnameChild[]" id="fnameChild">
<input type="text" name="lnameChild[]" id="lnameChild">
</div>
<?php $countPeople++; } ?>
<button class="continue">Confirm</button>
</form>
I tried to this code to validate the form, but it doesn't work 我尝试使用此代码来验证表单,但是它不起作用
function checkPassenger() {
$('[id^=adult]').each(function() { // hidden input
var fnameAdult = $(this).closest('div.person').find("input#fnameAdult").val();
var lnameAdult = $(this).closest('div.person').find("input#lnameAdult").val();
if(fnameAdult.length < 1) {
console.log('error: First name is missing');
return false;
}
if(lnameAdult.length < 1) {
console.log('error: Last name is missing');
return false;
}
});
alert("submit form");
return false;
}
After i click the button, alerts 'submit form' and i want to first validate the form, if all fields validated, then submit the form to show.php file 我单击按钮后,提醒“提交表单”,我想先验证表单,如果所有字段都通过验证,然后将表单提交给show.php文件
You are using id in for loop , best way is give class to fields and check it is filled or not. 您在for循环中使用id,最好的方法是将类赋予字段并检查其是否已填充。
<form action="./show.php" method="post" onsubmit="return checkFrom();">
<?php for ($i = 0; $i < $adultsNum; $i++) { ?>
<div class="person adult">
<input type="hidden" id="adult<?=$countPeople;?>">
<input type="text" class="fnameadult" name="fnameAdult[]" id="fnameAdult">
<input type="text" class="lnameadult" name="lnameAdult[]" id="lnameAdult">
</div>
<?php $countPeople++; } ?>
<?php for ($j = 0; $j < $childNum; $j++) { ?>
<div class="person child">
<input type="hidden" id="child<?=$countPeople;?>">
<input type="text" class="fnamechild" name="fnameChild[]" id="fnameChild">
<input type="text" class="fnamechild" name="lnameChild[]" id="lnameChild">
</div>
<?php $countPeople++; } ?>
<button class="continue">Confirm</button>
</form>
In checkPassenger method you can loop by class 在checkPassenger方法中,您可以按类循环
function checkPassenger() {
$('.fnameadult').each(function(){
if ($.trim($(this).val()) == '')
{
console.log('error: First name is missing');
return false;
}
});
$('.lnameadult').each(function(){
if ($.trim($(this).val()) == '')
{
console.log('error: Last name is missing');
return false;
}
});
//Same for others
alert("submit form");
return false;
}
Second way is give same class to all input fields and check 第二种方法是给所有输入字段相同的类并检查
function checkPassenger() {
var error =0;
$('.ClassName').each(function(){
if ($.trim($(this).val()) == '')
{
error++;
}
});
if(error>0)
{
alert('Please enter all fields');
return false;
}
//Same for others
alert("submit form");
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.