JavaScript - Form OnSubmit работает, но Action нет - PullRequest
4 голосов
/ 13 июня 2009

На моем FORM по какой-то причине я могу получить входную переменную формы через onsubmit, но не используя action.

Это работает:

<form onsubmit="javascript:myFunc(this.city.value);">
    <p><input type="text" id="city-field" name="city" onfocus="this.select();" /> <input type="submit" value="Find" /></p>
</form>

Это не работает (this.city.value найдено равным нулю)

<form action="javascript:myFunc(this.city.value);">
    <p><input type="text" id="city-field" name="city" onfocus="this.select();" /> <input type="submit" value="Find" /></p>
</form>

Почему onsubmit может получить this.city.value, а событие action - нет?

Ответы [ 3 ]

11 голосов
/ 13 июня 2009

Тег действия формы ничего не ссылается на this

Вместо этого используйте абсолютное местоположение

action="javascript:myFnc(document.getElementById('city-field').value)"
4 голосов
/ 13 июня 2009

Редактировать : Благодаря комментарию Кристофа ниже я осознал свой огромный недосмотр. Вот окончательное решение с его предложением.

<form action="" onsubmit="myFunc(this.city.value); return false;">
    <p><input type="text" id="city-field" name="city" onfocus="this.select();" /> <input type="submit" value="Find" /></p>
</form>

Это должно делать то, что вам нужно. Я прошу прощения за то, что не уделил вам моего полного внимания в моих предыдущих ответах.

0 голосов
/ 13 июня 2009

HTML-формы используются для отправки данных обратно в сценарий на сервере для обработки данных. Когда форма отправляется, данные в полях формы передаются на сервер в виде пар имя-значение. Серверные сценарии, которые могут быть написаны на нескольких разных языках, используются для обработки входящих данных и возврата новой HTML-страницы в браузер. Страница, возвращаемая в браузер, может быть любой из сообщения «Спасибо за регистрацию» или списка результатов поиска, сгенерированных по запросу базы данных.

, поскольку форма предназначена для отправки данных в другой файл на сервере. в действии мы можем только указать путь, по которому нам нужно отправить данные. так что вы не можете получить значения, которые имеет форма.

...