Как отправить форму с помощью javascript с "этим"


Есть ли способ представить текущую форму, в которой у меня есть ссылка href, как это

<a href="javascript:;" onclick="this.submit();">Save</a>

Я хочу использовать тот же код evrywhere, поэтому я не могу использовать какой-либо идентификатор или класс

6 6

6 ответов:

Отправить форму с помощью this.form.submit()

То есть в вашем случае это будет похоже на

<a href="#" onclick="this.form.submit();">Save</a>

Но настоятельно рекомендуется использовать имя формы

В противном случае, если вам удобно использовать jquery, вы также можете использовать jquery самый близкий функция

$(field).closest("form").submit();
<a href="" onclick="!function(a){while(a&&a.nodeName!="FORM")a=a.parentNode;if(a)a.submit();}(this);"></a>

Я использую это решение для неизвестного имени формы:

function submitForm(originator)
{
    var pN=originator.parentNode;
    while (true)
    {
        if (pN&&pN.nodeName=='FORM')
        {
            pN.submit();
            break;
        }
        pN=pN.parentNode;
    }
}

И теперь на любом событии объекта документа мы можем использовать эту функцию:

<div onclick="doSomething();submitForm(this)">test</div>

Чего вы хотите, так это:

<a href="javascript:;"onclick="document.forms.<formname>.submit();">Save</a>

На самом деле это, кажется, работает, когда <formname> также заменяется идентификатором формы.

Хотя я настоятельно рекомендую вам изучить практику, известную как ненавязчивый Javascript

Допустим, у вас есть n количество форм на странице. Вы можете отправить i+1 - ю форму, используя:

document.forms[i].submit();

Так что если у вас есть только один, и вы хотите отправить по ссылке нажмите,

document.forms[0].submit();

Должно быть значение вашего атрибута onclick

Вы можете попробовать этот код

<a href="" onkeypress="submit(this.form)"/>
<script>
    function submit(form) {
        form.submit();
    }
</script>