#javascript #html #forms
#javascript #HTML #формы
Вопрос:
Итак, у меня проблема, я хочу передать очень простой пользовательский ввод в функцию javascript, чтобы javascript затем обрабатывал эту информацию, я действительно хочу передавать только строки, однако я просто хочу изучить концепцию. Ниже показано, как я (ДУМАЮ) вы бы это сделали, но это не работает, и я не уверен, почему. Может кто-нибудь показать мне, как это сделать просто и правильно.
<body>
<form id="frm1">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br><br>
<input type="button" onclick="myFunction(fname, lname)" value="Submit">
</form>
<script>
function myFunction(fname, lname) {
console.log(fname);
console.log(lname);
}
</script>
</body>
Комментарии:
1. привет, возможно
myFunction(this.form.fname.value, this.form.lname.value)
2. @IronMan Откуда
this
взялся?3. да. ` <тип ввода =»кнопка» onclick=»Моя функция (this.form.fname.value, this.form.lname.value)» значение =»Отправить»>` работает
Ответ №1:
Вот альтернативный подход, который может помочь:
Вы можете увидеть часть следующего кода в действии по этой ссылке: https://jsfiddle.net/m85yLoca /
<html>
<head></head>
<body>
<form id="frm1">
First name: <input type="text" name="fname" id="fname"><br>
Last name: <input type="text" name="lname" id="lname"><br><br>
<input type="button" onclick="myFunction()" value="Submit">
</form>
<script>
function myFunction() {
let fname = document.querySelector('#fname').value;
let lname = document.querySelector('#lname').value;
console.log(fname);
console.log(lname);
}
</script>
</body>
Я позаботился о том, чтобы добавить id=""
настройки для fname
lname
входных данных формы и. Это может помочь нам индивидуально указать, к каким входным данным мы хотим получить доступ для последующего использования.
Этот подход используется document.querySelector()
для точного определения того, к какому вводу формы вы хотите получить доступ. Я получаю значение ввода через .value
часть в конце document.querySelector()
строк, а затем присваиваю их отдельным переменным fname
и lname
.
Затем вы можете получить доступ к отдельным fname
и lname
переменным в вашей функции.
Ответ №2:
Это можно сделать следующим шагом.
- получение всего входного значения DOM с помощью
document.querySelectorAll()
. Я не добавлялid
в каждый из входных данных. Вместо этого я выбираю их все - выберите каждый из них и присвоите значение переменной.
<form id="frm1">
First name: <input type="text" name="fname" ><br>
Last name: <input type="text" name="lname" ><br><br>
<input type="button" onclick="myFunction()" value="Submit">
</form>
<script>
function myFunction() {
const inputValues = document.querySelectorAll('#frm1 input')
const fname = inputValues[0].value;
const lname = inputValues[1].value;
console.log(fname, lname);
}
</script>
Если позже вам потребуется отправить данные на сервер. Просто добавьте onsumbit
атрибут.
<form onsubmit="sendData()">
//input and other structure
<input type="submit" value="Submit">
</form>
<script>
function sendData(){
//pack all your input value
//make the ajax call here
}
</script>