我有一个复杂的形式,我试图简化。我有2个订阅选项,6个月和12个月。对于购物车后端,我需要传递隐藏属性(订阅结束日期),这取决于用户选择的持续时间。
即。如果用户选择6个月,那么隐藏的attirbute应该包含此php作为值
有没有人知道如何在没有JS的情况下做到这一点?我不能使用JS,因为我使用的是PHP。
<form action="#" method="post">
<input type="radio" name="name" value="Six Months">Six Months</input>
<input type="radio" name="name" value="Twelve Months">Twelve Months</input>
<!-- add this if Six Months radio is selected
-->
<input type="hidden" name="sub_enddate" value="<?php echo date('Ymd', strtotime("+12 month +1 day")); ?>"></input>
<!-- add this if Six Months radio is selected
-->
<input type="hidden" name="sub_enddate" value="<?php echo date('Ymd', strtotime("+6 month +1 day")); ?>"></input>
</form>
答案 0 :(得分:0)
如果您不想使用JavaScript,则必须提交两次表单。所以:
<form action="#" method="post">
<input type="radio" name="subscriptionLength" value="Six Months">Six Months</input>
<input type="radio" name="subscriptionLength" value="Twelve Months">Twelve Months</input>
<?php
if ($_POST['subscriptionLength'] == "Six Months") {
echo "<input type=\"hidden\" name=\"sub_enddate\" value=\"".date('Ymd', strtotime("+6 month +1 day"))."\"></input>";
} elseif ($_POST['subscriptionLength'] == "Twelve Months") {
echo "<input type=\"hidden\" name=\"sub_enddate\" value=\"".date('Ymd', strtotime("+12 month +1 day"))."\"></input>";
}
?>
</form>
然后你必须添加一个字段来确定他们是第一次还是第二次提交。
答案 1 :(得分:0)
没有JS 。但是你需要在这里使用JS。
// Index.php
<?php
session_start();
if ( (strtolower($_SERVER['REQUEST_METHOD']) == 'post') && !empty($_POST['radio_month']) ){
$sub_enddate = ($_POST['radio_month']== "Six Months" ) ? $_POST['sub_enddate_6'] : $_POST['sub_enddate_12'];
/*
TODO Choose
$_SESSION['sub_enddate'] = $sub_enddate;
or
$_COOKIE['sub_enddate'] = $sub_enddate;
or
$QUERY_STRING ='';
$QUERY_STRING = '?'.http_bulid_query(array('sub_enddate'=>$sub_enddate));
*/
header("Location:action.php".$QUERY_STRING);
}
?>
<form action="#" method="post">
<input type="radio" name="radio_month" value="Six Months">Six Months</input>
<input type="radio" name="radio_month" value="Twelve Months">Twelve Months</input>
<input type="hidden" name="sub_enddate_12" value="<?php echo date('Ymd', strtotime("+12 month +1 day")); ?>"></input>
<input type="hidden" name="sub_enddate_6" value="<?php echo date('Ymd', strtotime("+6 month +1 day")); ?>"></input>
<input type="submit" value="Submit" />
</form>
action.php的
session_start();
// choosen by "passing" type
$sub_enddate = $_SESSION['sub_enddate'];
// or
$sub_enddate = $_COOKIE['sub_enddate'];
// or
$sub_enddate = $_GET['sub_enddate'];
答案 2 :(得分:0)
为什么不只是
<input type="radio" name="name" value="<?php echo date('Ymd', strtotime("+6 month +1 day")); ?>">Six Months</input>
<input type="radio" name="name" value="<?php echo date('Ymd', strtotime("+12 month +1 day")); ?>">Twelve Months</input>
使用JS而不使用客户端时间
window.onload=function() {
var vals = ['<?php echo date('Ymd', strtotime("+6 month +1 day")); ?>',
'<?php echo date('Ymd', strtotime("+12 month +1 day")); ?>']
document.getElementById("form1").onsubmit=function() {
this.sub_enddate.value=vals[this.elements["name"][0].checked?0:1]
}
}
使用此HTML
<form id="form1" action="#" method="post">
<input type="radio" name="name" value="Six Months">Six Months</input>
<input type="radio" name="name" value="Twelve Months">Twelve Months</input>
<input type="hidden" name="sub_enddate" value=""></input>
</form>