基于单选按钮和复选框的表单重定向?
我如何创建一个表单,根据他们选择的内容将用户重定向到不同的URL?基于单选按钮和复选框的表单重定向?
该表格与https://www.dropbox.com/upgrade非常相似,其中您有3个主要的单选按钮,每月或每年的单选按钮和一个加载项的复选框。
该表单还会计算选择。
没有看到任何代码,最简单的方法是使用单选按钮的onclick事件来更新表单动作属性。粗例子是:
<html>
<head></head>
<body>
<form onsubmit="submitForm();" id="myForm" type="get">
<input type="radio" name="myRadio1" data-op="0" value="10" onclick="calcNow();" selected />Monthly
<input type="radio" name="myRadio1" data-op="1" value="120" onclick="calcNow();" />Annually<br/>
<input type="radio" name="myRadio2" data-op="0" value="10" onclick="calcNow();" selected />Option A
<input type="radio" name="myRadio2" data-op="1" value="20" onclick="calcNow();" />Option B<br/>
<input id="myCheckbox" name="myCheckbox" type="checkbox" value="10" onclick="calcNow();" />Add-on<br/>
<input id="myTotal" name="myTotal" type="text" value="" disabled="disabled" /><br/>
<input type="button" id="myButton" onclick="submitForm();" value="Continue" />
</form>
<script type="text/javascript">
var pages = [[["page1.html","page2.html"],["page3.html","page4.html"]],[["page5.html","page6.html"],["page7.html","page8.html"]]];
function calcNow()
{
var cb = document.getElementById("myCheckbox");
var cost1 = getRadioValue("myRadio1");
var cost2 = getRadioValue("myRadio2");
var cost3 = cb.checked ? parseInt(cb.value) : 0;
var costTotal = cost1 + cost2 + cost3;
document.getElementById("myTotal").value = costTotal;
var op1 = getRadioData("myRadio1", "op");
var op2 = getRadioData("myRadio2", "op");
var op3 = cb.checked ? 1 : 0;
if (op1 != undefined && op2 != undefined && op3 != undefined)
{
return pages[op1][op2][op3];
}
return undefined;
}
function submitForm()
{
var page = calcNow();
if (page != undefined)
{
// ---- To popup ----
//alert(page);
// ---- To navigate ----
location.href = page;
// ---- To alter post ----
//var form = document.getElementById("myForm");
//form.action = page;
//form.submit();
}
else
{
alert("Please answer all questions.");
}
}
function getRadioValue(name)
{
var controls = document.getElementsByName(name);
for (var i = 0; i < controls.length; i++) {
if (controls[i].checked) {
return parseInt(controls[i].value);
}
}
return 0;
}
function getRadioData(name, attribute)
{
var controls = document.getElementsByName(name);
for (var i = 0; i < controls.length; i++) {
if (controls[i].checked) {
return parseInt(controls[i].dataset[attribute]);
}
}
return undefined;
}
</script>
</body>
</html>
注意,这是很基本的HTML和JavaScript,所以如果你有这个麻烦,你可能需要在接触与一个网页设计师。这部分是容易的一点!
谢谢Sav,我需要更改以添加更多按钮和复选框。例如,如果用户选择收音机1,收音机B,然后选择复选框,另一个收音机2,收音机A并且没有复选框。 这有道理吗? – 2013-04-24 08:25:35
代码已更新以添加其他控件。 – Sav 2013-04-25 12:34:18
问题的第二部分是:我如何根据这些值重定向到一个URL? 例如,如果有人点击每月和选项a它会去pagea.html,如果他们点击每月与选项B它会去pageb.html等等... 再次感谢 – 2013-04-28 14:52:01
你试过了什么?你可以发布你的代码吗? – 2013-04-24 07:49:40
你没有提到你希望如何实现这一点或语言,例如PHP的?或者你需要一些东西来为客户端工作?注意:不能嵌套表单,但可以使用java将选择复制到表单之间的隐藏字段中。就我个人而言,我会在PHP中做这个,然后用它来构建一个合适的响应页面。 – 2013-04-24 08:00:25
对不起,我曾尝试并根据本网站上的其他帖子将一些基本代码放在一起,但经过几次尝试后,我无法使其工作。我想为表单使用HTML,但如果可能的话通过PHP传递... – 2013-04-24 08:23:05