我有2个文本字段,如果您按下加号按钮,它将使用jQuery生成另外2个文本字段。
对于每个集合,只有一个字段必须具有一个值,即:这将通过验证:
email number
email
number
但是如果两个字段都保留为空,则验证将失败。
我不确定如何实现这一目标。我当前的验证要求两个字段都不能为空。
foreach($this->contact_email as $email) {
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->errors[] = 'Invalid email address';
}
}
foreach($this->contact_number as $number) {
if(strlen($number) < 10) {
$this->errors[] = 'Contact number should be 10 characters long';
}
}
HTML:
<?php foreach($contactDetails as $details): ?>
<div class="form-row">
<div class="col">
<br>
<input type="text" class="form-control" placeholder="Contact Email address" name="contact_email[]" value="<?php echo htmlspecialchars($details->contact_email); ?>">
</div>
<div class="col">
<br>
<input type="text" class="form-control" placeholder="Contact phone number" name="contact_number[]" value="<?php echo htmlspecialchars($details->contact_number); ?>">
</div>
</div>
<?php endforeach; ?>
答案 0 :(得分:1)
如果您始终可以确保电子邮件和数字字段的数量相同,则可以通过以下单个循环来解决:
foreach($this->contact_email as $index=>$email) {
$number = $this->contact_number[$index];
$validMail = filter_var($email, FILTER_VALIDATE_EMAIL);
$validNumber = strlen($number) < 10;
if ($validMail || $validNumber) {
continue;
}
if(!$validMail) {
$this->errors[] = 'Invalid email address';
}
if(!$validNumber) {
$this->errors[] = 'Contact number should be 10 characters long';
}
}
答案 1 :(得分:0)
我想它们在<form>
内,所以您可以在控制器si内执行以下操作:
if(!empty($_POST['email'])){
//your code here
};
希望我了解您的问题,我会为您提供帮助。