нажмите () кнопку с именем «отправить» в Javascript - PullRequest
1 голос
/ 31 декабря 2010

У меня есть этот HTML:

<input type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>

Я хочу щелкнуть () по нему.Я не могу ничего изменить на HTML-стороне.Когда я делаю getElementById("submit").click(), я получаю это:

>>> document.getElementById("submit").click();
Cannot convert 'document.getElementById("submit")' to object

Любые подсказки?

Ответы [ 7 ]

3 голосов
/ 24 апреля 2015

ПРИМЕЧАНИЕ: НИКОГДА не вызывайте ничего в форме «отправить»!Он будет скрывать событие отправки формы из скрипта.

У вас есть много способов получить доступ к кнопке

document.querySelector("[name=submit]").click(); // first named button

document.querySelector("#form [name=submit]").click(); // in form with id="form"

Старые IE будут скрывать имя, чтобы вы могли использовать getElementById для имени, но этоне рекомендуется.

Старые методы:

document.getElementsByName("submit")[0].click();

, где 0 - это первый элемент на странице с именем submit.

document.forms[0].elements[0].click(); 

, где forms[0] - первая форма, а elements[0] - первый элемент

или

document.getElementsByTagName("form")[0].elements[0].click(); 

, где ("form")[0] - первая форма настраница и elements[0] это первый элемент

1 голос
/ 31 декабря 2010

Поскольку вы не можете редактировать фактический HTML (чтобы добавить атрибут id), и вы хотите, чтобы он был кросс-браузерным, вы можете перебрать все входные элементы и проверять атрибуты типа и значения, пока они не совпадут с вашими.кнопка отправки:

function get_submit_button() {
    var inputs = document.getElementsByTagName('INPUT');
    for(var i=0; i < inputs.length; i++) {
        var inp = inputs[i];
        if(inp.type != 'submit') continue;
        if(inp.value == 'Invoeren' && inp.name == 'submit') {
            return inp;
            break; // exits the loop
        }
    }
    return false;
}

function click_submit() {
    var inp = get_submit_button();
    if(inp) inp.click();
}
1 голос
/ 31 декабря 2010

Непосредственная проблема, которую я вижу, заключается в том, что вы НЕ назначили идентификатор submit на ваш вход, поэтому это не будет работать:

document.getElementById("submit").........

, если вы не указали также и идентификатор:

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>
1 голос
/ 31 декабря 2010

Вы используете getElementById, но у вас нет атрибута id на входе. То, что IE полностью обрабатывает пространство имен и обрабатывает атрибуты name, как атрибуты id, не означает, что вам следует.

<input id="submit" ... />
...
document.getElementById('submit').click();
0 голосов
/ 31 декабря 2010

Нет элемента с идентификатором "submit" - у вас есть элемент с именем"submit".Как указывает Дилан, jQuery сделает все проще, но вы можете исправить это самостоятельно.Если вы не можете изменить HTML, сделайте что-то вроде этого:

var buttons = document.getElementsByTagName("submit");
for (var i=0; i < buttons.length; i++) {
  var button = buttons[i];
  if (button.getAttribute("name") === "submit") {
     button.onclick = whatever ...
0 голосов
/ 31 декабря 2010

Ваш ввод не имеет атрибута id, поэтому его нельзя получить по id. Используйте это вместо этого.

<input id="submit" type="submit" name="submit" value="Invoeren" accesskey="s" class="buttons"/>
0 голосов
/ 31 декабря 2010

Возможно, вы захотите заглянуть в jQuery.Так все становится намного проще.

...