我的表单中有两个相同名称的输入(我使用css根据屏幕大小显示一个或另一个),但在表单子目录中,只获取最后一个值,即对我来说是一个问题,因为如果display:none
它可以为空。我想出了一个技巧,其中包括克隆输入值,这个输入值对另一个非空,所以当我将POST变量发送给PHP时,任何人都可以返回输入的值。
这是我的HTML代码:
<form id="form" class="form" name="postuler" method="post" action="receive-post.php" enctype="multipart/form-data" novalidate>
<div class="not-hidden">
<label for="mail">Email address <span class="required">*</span></label>
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email" id="email" maxlength="40" />
</div>
<div class="hidden-fields">
<label for="mail">Email address <span class="required">*</span></label>
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email" id="email" maxlength="40"/>
</div>
<input type="submit" name="upload" id="send" value="Submit" class="postu"/>
</form>
这是我的jQuery代码:
$(document).ready(function(){
$('#envoyez').on('click', function () {
if($.trim($('.hidden-fields #email').val())==0){
$('.hidden-fields #email').val()==$.trim($('.not-hidden #email').val())
} else if ($.trim($('.not-hidden #email').val())==0){
$('.not-hidden #email').val()==$.trim($('.hidden-fields #email').val())
}
})
})
这是我的PHP代码:
if(!empty($_POST['email'])){
var_dump($_POST['email']);
} else {
echo "Theres a problem somewhere" ;
}
我得到的问题是,如果我填充not-hidden
字段,在php端我得到一个空字符串,因为它总是检索隐藏字段值。
答案 0 :(得分:2)
您好,您可以尝试这样
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email[]" id="email" maxlength="40" />
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email[]" id="email" maxlength="40"/>
然后你可以在php脚本中循环检查数组是否为空并获取填充的密钥。
<强>更新强>
以下是检查数组并获取填充密钥的方法
if (isset($_POST['email'])) {
$emails = $_POST['email'];
foreach ($emails as $key => $email) {
if (!is_null($email)) {
echo $email;
break;
}
}
}
这是基本检查,您可以将电子邮件保存在变量中或执行其他检查,但这是获取值的基础
答案 1 :(得分:1)
您的jQuery代码中存在一些错误,例如:
0
进行比较,这是错误的。相反,您应该将其长度与0
进行比较。$('... #email').val()==$.trim($...)
,==
用于比较,=
用于分配。所以你的jQuery代码应该是这样的:
$(document).ready(function(){
$('#envoyez').on('click', function () {
if($.trim($('.hidden-fields #email').val()).length == 0){
$('.hidden-fields #email').val($.trim($('.not-hidden #email').val()));
} else if ($.trim($('.not-hidden #email').val()).length == 0){
$('.not-hidden #email').val($.trim($('.hidden-fields #email').val()));
}
})
});
使用上面的代码段,填写哪个输入文本字段无关紧要,另一个字段也会自动更新相同的值。点击提交按钮后,您只需获得一个包含POST
请求的电子邮件ID。
另一种方法是将name
属性用作name='email[]'
两个电子邮件输入字段。这里没有必要使用任何jQuery。
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email[]" id="email" maxlength="40" />
<input type="email" class="email" placeholder="ex: jdoe@exelcia-it.com" name="email[]" id="email" maxlength="40"/>
这样,您可以通过以下方式访问提交的电子邮件ID(与填写哪个输入文本字段无关),
if(isset($_POST['email'])){
$email = array_values(array_filter($_POST['email']));
if(count($email))
echo $email[0];
else
echo "Theres a problem somewhere";
}