我希望在表单中将选中的输入单选按钮值传递给window.open
方法。 Bellow是我尝试使用的,但无论选择什么,总是复制第二个输入的值。这有什么不对?
onsubmit="window.open(document.getElementByName('option').value);"
和
<input type="radio" name="option" value="http://example1.com" checked> daily
<input type="radio" name="option" value="http://example2.com"> weekly
答案 0 :(得分:5)
如果你真的想使用onsubmit =,可以使用querySelector
和:checked
pseudoclass来完成。 (注意:在IE8或更早版本中不起作用,但在现代浏览器中不适用于IE9。)
onsubmit="window.open(document.body.querySelector('input[name=option]:checked').value)"
直播示例:
<form onsubmit="alert('Would have opened: ' + document.body.querySelector('input[name=option]:checked').value); return false;">
<input type="radio" name="option" value="http://example1.com" checked>daily
<input type="radio" name="option" value="http://example2.com">weekly
<input type="submit" value="Send">
</form>
答案 1 :(得分:2)
您需要获取所选(已选中)按钮的值。
如果你不需要支持IE8(遗憾的是still has significant market share),Jaromanda X's answer using :checked
就可以了。
如果 需要支持IE8,您必须循环查找选中的单选按钮:
function openSelected() {
var list = document.querySelectorAll("input[name=option]");
var i;
for (i = 0; i < list.length; ++i) {
if (list[i].checked) {
window.open(list[i].value);
break;
}
}
}
然后在你的HTML
中onsubmit="openSelected();"
...虽然我总是主张使用addEventListener
/ attachEvent
来挂钩事件处理程序。
直播示例:
function openSelected() {
var list = document.querySelectorAll("input[name=option]");
var i;
for (i = 0; i < list.length; ++i) {
if (list[i].checked) {
alert("Would have opened: " + list[i].value);
break;
}
}
}
&#13;
<form onsubmit="openSelected(); return false;">
<input type="radio" name="option" value="http://example1.com" checked>daily
<input type="radio" name="option" value="http://example2.com">weekly
<input type="submit" value="Send">
</form>
&#13;
答案 2 :(得分:0)
您需要选择 $ ./bin/stack_iter
iterating over nodes in stack without popping
my dog, the lab,
has lots of fleas,
my cat has more...
popping items from stack
my dog, the lab,
has lots of fleas,
my cat has more...
。
getElementsByName()
返回一个数组。您需要选择所需的元素。
所以你需要使用:
option
表示第一个选项,或者:
onsubmit="window.open(document.getElementsByName('option')[0].value);"
第二个选项
答案 3 :(得分:0)
您可以随时将输入字段设为ID,并调用ID而不是名称。例如:
onsubmit="window.open(document.getElementById('IDname').value);"
和
<input type="radio" id="IDname" name="option" value="http://example1.com" checked> daily
<input type="radio" name="option" value="http://example2.com"> weekly