Как передать входное значение формы в функцию JavaScript - PullRequest
23 голосов
/ 10 октября 2011

У меня есть общая функция JavaScript, которая принимает один параметр

function foo(val) { ...} 

и я хочу вызвать функцию при отправке формы

<form>
<input type="text" id="formValueId"/>
<input type="button" onclick="foo(this.formValueId)"/>
</form>

но выражение foo (this.formValueId) не работает (не удивительно, это была отчаянная попытка), поэтому вопрос в том, как передать значение формы в функцию javascript. Как я уже упоминал, javascript является универсальным, и я не хочу манипулировать формой внутри него!

Я мог бы создать вспомогательную функцию в середине, чтобы получить значения формы с помощью jQuery (например), а затем вызвать функцию, но мне было интересно, смогу ли я сделать это без вспомогательной функции.

Ответы [ 6 ]

22 голосов
/ 10 октября 2011

Может быть чище извлечь встроенный обработчик кликов и сделать это так:

$(document).ready(function() {
    $('#button-id').click(function() {
      foo($('#formValueId').val());
    });
});
17 голосов
/ 10 октября 2011

Дайте ваши имена входов, это облегчит

<form>
<input type="text" id="formValueId" name="valueId"/>
<input type="button" onclick="foo(this.form.valueId.value)"/>
</form>

UPDATE:

Если вы дадите своей кнопке идентификатор, все может быть еще проще:

<form>
<input type="text" id="formValueId" name="valueId"/>
<input type="button" id="theButton"/>
</form>

Javascript:

var button = document.getElementById("theButton"),
value =  button.form.valueId.value;
button.onclick = function() {
    foo(value);
}
6 голосов
/ 10 октября 2011

Есть несколько способов подойти к этому.Лично я бы избегал встроенных скриптов .Поскольку вы пометили jQuery, давайте использовать это.

HTML:

<form>
    <input type="text" id="formValueId" name="valueId"/>
    <input type="button" id="myButton" />
</form>

JavaScript:

$(document).ready(function() {
    $('#myButton').click(function() {
      foo($('#formValueId').val());
    });
});
6 голосов
/ 10 октября 2011

Использование onclick="foo(document.getElementById('formValueId').value)"

2 голосов
/ 17 октября 2013

Ну, да, вы можете сделать это таким образом.

    <input type="text" name="address" id="address">
        <div id="map_canvas" style="width: 500px; height: 300px"></div>
    <input type="button" onclick="showAddress(address.value)" value="ShowMap"/>

Java Script

function showAddress(address){

    alert("This is address :"+address)

}

Это один пример для того же. и это будет работать.

1 голос
/ 10 октября 2011

Более стабильный подход:

<form onsubmit="foo($("#formValueId").val());return false;">
<input type="text" id="formValueId"/>
<input type="submit" value="Text on the button"/>
</form>

return false; - предотвращение фактической отправки формы (если вы этого хотите).

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