将表单从选择下拉字段更改为单选按钮并保留功能
Change form from select dropdown field to radio button and keep functionality
我有一个表单,它根据用户对一组select
元素的选择来重定向用户。我试图将其转换为使用单选按钮而不是选择列表,但保留原始功能。
<form>
<p>option1 </p>
<select id="option1">
<option value="0" id="Select">Select</option>
<option value="1" id="coffee">Coffee</option>
</select>
<p>option2</p>
<select id="option2">
<option value="0" id="Select">Select</option>
<option value="1" id="White">White</option>
<option value="2" id="Black">Black</option>
</select>
<p>option3</p>
<select id="option3">
<option value="0" id="Select">Select</option>
<option value="1" id="std">STD</option>
<option value="2" id="300">300</option>
<option value="3" id="500">500</option>
</select>
<p>option4</p>
<select id="option4">
<option value="0" id="Select">Select</option>
<option value="1" id="america">America (NT - ST)</option>
<option value="2" id="australia">Australia and Oceania</option>
</select>
<br><br>
<input onclick="goToPage();" type="button" value="Submit" />
</form>
<script type="text/javascript">
function goToPage()
{
var option1 = document.getElementById("option1").value;
var option2 = document.getElementById("option2").value;
var option3 = document.getElementById("option3").value;
var option4 = document.getElementById("option4").value;
if (option1==1 && option2==1 && option3==1 && option4==1) { window.location = "http://www.testint.com/us"; }
else if (option1==1 && option2==2 && option3==3 && option4==2) { window.location = "http://www.testing.com/au"; }
}
</script>
HTML:
<form>
<p>option3</p>
<input type="radio" name="option3" id="std" />STD
<input type="radio" name="option3" id="300" />300
<input type="radio" name="option3" id="500" />500
<p>option4</p>
<input type="radio" name="option4" id="america" />America (NT - ST)
<input type="radio" name="option4" id="australia" />Australia and Oceania
<input type="button" onclick="goToPage();" value="Submit" />
</form>
JS:
function goToPage() {
var option3 = document.getElementsByName("option3");
var option4 = document.getElementsByName("option4");
// if "300" and "America (NT - ST) is checked
if (option4[0].checked && option3[1].checked) {
// do something
}
});
演示
基本上替换所有<选项>s的<input type="radio">s
其中每个<选项>组<select id="X">变成<input name="X">
这将为每个旧<选择>s.
然后,要获得值,我们必须获得该组(getElementsByName
)的所有单选按钮,并找出哪个是checked
(getValue
)。
现在,你可以用价值观做任何你想做的事!
代码:
<form id="form">
<p>option1 </p>
<input type="radio" name="option1" value="0" id="Select" />Select
<input type="radio" name="option1" value="1" id="coffee" />Coffee
<p>option2</p>
<input type="radio" name="option2" value="0" id="Select" />Select
<input type="radio" name="option2" value="1" id="White" />White
<input type="radio" name="option2" value="2" id="Black" />Black
<p>option3</p>
<input type="radio" name="option3" value="0" id="Select" />Select
<input type="radio" name="option3" value="1" id="std" />STD
<input type="radio" name="option3" value="2" id="300" />300
<input type="radio" name="option3" value="3" id="500" />500
<p>option4</p>
<input type="radio" name="option4" value="0" id="Select" />Select
<input type="radio" name="option4" value="1" id="america" />America (NT - ST)
<input type="radio" name="option4" value="2" id="australia" />Australia and Oceania
<br/><br/>
<input onclick="goToPage();" type="button" value="Submit" />
</form>
function getValue(radios) {
for (var index = 0; index < radios.length; ++index) {
if (radios[index].checked)
return radios[index].value;
}
return null;
}
function goToPage() {
var option1 = getValue(document.getElementsByName("option1"));
var option2 = getValue(document.getElementsByName("option2"));
var option3 = getValue(document.getElementsByName("option3"));
var option4 = getValue(document.getElementsByName("option4"));
//demo option1's value
alert(option1);
/*your code here
if (option1==1 && option2==1 && option3==1 && option4==1)
window.location = "http://www.testint.com/us";
else if (option1==1 && option2==2 && option3==3 && option4==2)
window.location = "http://www.testing.com/au";
*/
}
试试这个(请参阅JSFidle):
JS-
// Taken from http://stackoverflow.com/questions/1682964/in-javascript-how-can-i-get-all-radio-buttons-in-the-page-with-a-given-name
function getCheckedValue(groupName) {
var radios = document.getElementsByName(groupName);
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
return radios[i].value;
}
}
return null;
}
function goToPage() {
values = [];
for (var j = 1; j < 5; j++) {
values[j] = getCheckedValue("option" + j);
}
if (values[1] == 1 && values[2] == 1 && values[3] == 1 && values[4] == 1) {
window.location = "http://www.testint.com/us";
} else if (values[1] == 1 && values[2] == 2 && values[3] == 3 && values[4] == 2) {
window.location = "http://www.testing.com/au";
}
}
HTML
<form>
<p>option1</p>
<input type="radio" name="option1" value="1" />Coffee
<p>option2</p>
<input type="radio" name="option2" value="1" />White
<input type="radio" name="option2" value="2" />Black
<p>option3</p>
<input type="radio" name="option3" value="1" />STD
<input type="radio" name="option3" value="2" />300
<input type="radio" name="option3" value="3" />500
<p>option4</p>
<input type="radio" name="option4" value="1" />America (NT - ST)
<input type="radio" name="option4" value="2" />Australia and Oceania
<br />
<br />
<input onclick="goToPage();" type="button" value="Submit" />
</form>
这非常有效,因为您的输入名称是1-5,所以我们可以循环这些数字来找到结果(尽管将它们命名为0-4会更好!)。如果您需要添加更多的组,那么只需增加j < 5
的值
相关文章:
- 交互2个单选按钮2个不同的功能Javascript
- 下拉菜单转换为单选按钮,不再触发特定功能
- 使用单选按钮参考另一个功能
- 如果选中单选按钮,如何转到另一个功能?(Javascript)
- 单选按钮升级功能
- 组合功能以使用 Jquery 在一组单选按钮中显示输入字段和单选按钮
- 单选按钮复位功能
- 是否可以在更改单选按钮时禁用/启用jquery功能
- (飞镖)我希望触发两个不同的onclick功能,具体取决于单击时是否选中了单选按钮.我该怎么做
- 使用单选按钮OnClick和JavaScript功能动态填充数字字段
- 如何为单选按钮和复选框设置禁用/只读功能
- 单选按钮上的功能单击不触发
- 循环通过单选按钮,功能不起作用
- 单击功能时取消选中其他单选按钮
- 多项选择测验-单选按钮和功能问题
- 按钮与单选按钮功能
- 如何在jQuery中模拟单选按钮功能
- Javascript单选按钮功能错误
- Javascript表多行单选按钮功能
- jQuery单选按钮功能不能正常工作