如何使一个字段仅在使用另一个字段时才需要
问题描述:
我有一个表单,用户可以输入同事的姓名和电子邮件地址。他们不需要输入任何内容。但是,如果输入名称,则需要电子邮件地址。如何使一个字段仅在使用另一个字段时才需要
<form>
1st name <input type="text" name="name_1" value"" />
1st email <input type="text" name="email_1" value"" />
2nd name <input type="text" name="name_2" value""/>
2nd email <input type="text" name="email_2" value""/>
</form>
我已经可以使用下面的功能做某些字段了。我想我可以使用if else语句来检查第一个名称是否有值,然后创建第一个电子邮件。但是,该表单有20个潜在的名称/电子邮件对。
我所追求的是关于我应该尝试这样做的事情的建议,而不是一个完整的解决方案。我对这个问题有点模糊,但我对PHP很陌生,并且在寻找解决方案时遇到困难。
function check_required_fields($required_array) {
$field_errors = array();
foreach($required_array as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && !is_numeric($_POST[$fieldname]))) {
$field_errors[] = $fieldname;
}
}
return $field_errors;
}
答
只要您与您的命名像场一致name_1
,你可以_
后提取与子操作数组键的数量,并寻找在email_
同等的数值。
foreach ($_POST as $key => $value) {
// If it is a name field and isn't empty
if (strpos($key, 'name_') === 0 && !empty($_POST[$key])) {
// The email field is email_ and the number (which comes after the 5th character in name_num)
$namenumber = substr($key, 5);
$emailfield = 'email_' . $namenumber;
// Append the email requirement onto $field_errors if it's empty in $_POST
if (empty($_POST[$emailfield])) {
$field_errors[] = $emailfield;
}
}
}
+0
谢谢,我喜欢那样。实际的形式比我给出的例子更复杂,但是我明白你已经做了什么,我想我可以使它工作。就是我以后的样子 – 2012-03-29 16:18:20
为什么不在客户端做呢?在提交做验证使用JavaScript/JQuery – 2012-03-29 15:34:41
我tryinig学习PHP,我发现最好的方式是通过实际上做某事。不过,我也可以学习一些jQuery,谢谢我提出的建议。 – 2012-03-29 16:07:36