Ориентация кнопки на форму для нажатия, с JavaScript - PullRequest
0 голосов
/ 21 января 2011

Я знаю, что, используя Javascript, я могу указать форму для отправки, используя что-то вроде этого:

document.forms[0].submit()

Однако, если на странице имеется несколько форм, которые могут быть в любом порядке, как бы я нацелил ссылку для отправки в этой форме:

<form action="/services/auth/" method="post">
<div id="auth-allow-container" class="button-container">
<a class="Butt" id="auth-allow" type="submit" href="#"><span>SUBMIT</span></a>
<a class="Butt CancelButt" id="auth-disallow" href="#home"><span>CANCEL</span></a>
</div>
</form>

.. так, как если бы пользователь нажал кнопку ОТПРАВИТЬ?

Ответы [ 3 ]

2 голосов
/ 21 января 2011

Вы можете сделать функцию:

function submitFormById(id) {
    var el = document.getElementById(id);
    while ( el && el.tagName.toLowerCase() != 'form') {
        el = el.parentNode;
    }
    el && el.submit();
}

Затем вы используете эту функцию так:

submitFormById('auth-allow');
submitFormById('auth-disallow');

Оба отправят форму.

1 голос
/ 21 января 2011

вставьте ссылку:

onclick="this.parentNode.parentNode.submit();"

это немного хрупко, если вы измените структуру dom, но это общая ссылка для этого вида формы

update:

document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("auth-allow").addEventListener("click", submithAuthForm, false);
}, false);

function submithAuthForm(){
    document.getElementById('auth-allow').parentNode.parentNode.submit();
}
1 голос
/ 21 января 2011

Дайте форме имя атрибута. Затем вы можете сделать document.name.submit (). т.е.

<form name="MyForm" ....>
<input ... />
</form>

Тогда вы сможете сделать document.MyForm.submit()

EDIT:

Как вы сказали, вы не можете изменить html, решения, добавляющие ID, также не помогут. Вам нужно будет определить, какой числовой элемент формы на странице является этим конкретным элементом, и выполнить docuemnt.forms [x] .submit (), где x - индекс этой формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...