PHP中如何通过父类名称获取元素
HTML标记:PHP中如何通过父类名称获取元素,php,Php,HTML标记: <form> <div class="required"> <input id="name" name="name"> </div> <div class="required"> <input id="email" name="email"> </div> <div class="non-required"> <input id="ot
<form>
<div class="required">
<input id="name" name="name">
</div>
<div class="required">
<input id="email" name="email">
</div>
<div class="non-required">
<input id="other" name="other">
</div>
...
alot of input here
...
</form>
...
这里有很多输入
...
PHP:
我可以手动编辑它,但是如何为PHP主函数自动选择input
具有required
类
谢谢。您无法访问父级的类名。用户提交表单时不会传输此信息 $\u POST中唯一可用的信息是输入元素的名称和值。您可以定义输入元素的名称来表示必需/非必需,如下所示:
<form>
<div class="required">
<input id="name" name="required[name]">
</div>
<div class="required">
<input id="email" name="required[email]">
</div>
<div class="optional">
<input id="another" name="optional[another]">
</div>
<div class="required">
<input id="other" name="required[other]">
</div>
</form>
警告如果使用此解决方案,请确保正确验证输入。您将信任用户代理提供有关字段的正确信息。请看Trincot的答案,了解纯服务器端解决方案。您无法访问父级的类名。用户提交表单时不会传输此信息 $\u POST中唯一可用的信息是输入元素的名称和值。您可以定义输入元素的名称来表示必需/非必需,如下所示:
<form>
<div class="required">
<input id="name" name="required[name]">
</div>
<div class="required">
<input id="email" name="required[email]">
</div>
<div class="optional">
<input id="another" name="optional[another]">
</div>
<div class="required">
<input id="other" name="required[other]">
</div>
</form>
警告如果使用此解决方案,请确保正确验证输入。您将信任用户代理提供有关字段的正确信息。看看Trincot的答案,这是一个纯粹的服务器端解决方案。因为您自己生成HTML,所以您实际上知道哪些输入元素具有“required”类。因此,我建议您首先创建一个包含必需字段的数组,并使用动态类值从该数组生成HTML 之后,您可以使用相同的数组检查是否为空: HTML生成:
<?php
// define the list of required inputs:
$required = array("name", "email");
// define a function that returns "required" or "non-required"
// based on the above array.
function req($name) {
global $required;
return in_array($required, $name) ? 'required' : 'non-required';
}
// Now generate the classes dynamically, based on the above:
?>
<form>
<div class="<?=req('name')?>">
<input id="name" name="name">
</div>
<div class="<?=req('email')?>">
<input id="email" name="email">
</div>
<div class="<?=req('other')?>">
<input id="other" name="other">
</div>
...
alot of input here
...
</form>
因为您自己生成HTML,所以您实际上知道哪些输入元素具有类“required”。因此,我建议您首先创建一个包含必需字段的数组,并使用动态类值从该数组生成HTML
之后,您可以使用相同的数组检查是否为空:
HTML生成:
<?php
// define the list of required inputs:
$required = array("name", "email");
// define a function that returns "required" or "non-required"
// based on the above array.
function req($name) {
global $required;
return in_array($required, $name) ? 'required' : 'non-required';
}
// Now generate the classes dynamically, based on the above:
?>
<form>
<div class="<?=req('name')?>">
<input id="name" name="name">
</div>
<div class="<?=req('email')?>">
<input id="email" name="email">
</div>
<div class="<?=req('other')?>">
<input id="other" name="other">
</div>
...
alot of input here
...
</form>
@特林科特:谢谢你的夸奖。您的解决方案遵循相同的思想,但将所有内容都保留在服务器端。根据具体情况,这可能更快、更安全。因此,我为我的问题添加了一个附录。@trincot:谢谢你的赞扬。您的解决方案遵循相同的思想,但将所有内容都保留在服务器端。根据具体情况,这可能更快、更安全。因此,我在我的问题中增加了一个增编。
<?php
// This extract is not needed for the next loop, but you might need it still:
extract($_POST, EXTR_PREFIX_ALL, 'input');
// go through all inputs that are required and test for empty
// until you find one, and produce the appropriate response
foreach($required as $name) {
if (empty($_POST[$name])) {
// main (error?) function here
break; // no need to continue the loop as we already found an empty one
}
}
?>