将输入值传递给window.open方法

时间:2015-07-19 09:51:31

标签: javascript html forms

我希望在表单中将选中的输入单选按钮值传递给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

4 个答案:

答案 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来挂钩事件处理程序。

直播示例:

&#13;
&#13;
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;
&#13;
&#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