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

#javascript #jquery #html #forms

#javascript #jquery #HTML #формы

Вопрос:

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

 function foo(val) { ...} 
  

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

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

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

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

Комментарии:

1. Это может быть вашим ответом. демонстрация: jsbin.com/icikav/5/edit#javascript ,html Метод, который вы пытаетесь вызвать, не определен.

2. Имейте в виду, что эту форму можно отправить, нажав Enter в текстовом поле (но не в IE), и нажатие кнопки не будет запущено.

Ответ №1:

Возможно, было бы удобнее удалить встроенный обработчик кликов и сделать это следующим образом:

 $(document).ready(function() {
    $('#button-id').click(function() {
      foo($('#formValueId').val());
    });
});
  

Ответ №2:

Дайте вашим входным данным имена, это упростит задачу

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

Обновить:

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

 <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);
}
  

Комментарии:

1. вместо onclick="foo(this.form.valueId.value)" мы можем использовать onclick="foo(valueId.value)" . это работает…

Ответ №3:

Используйте onclick="foo(document.getElementById('formValueId').value)"

Ответ №4:

Есть несколько способов подойти к этому. Лично я бы избегал встроенных сценариев. Поскольку вы отметили 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());
    });
});
  

Ответ №5:

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

     <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. пожалуйста, добавьте также Java script

Ответ №6:

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

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

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