Попытка получить доступ к вводу формы в javascript

Я новичок в веб-разработке, и я пытаюсь получить доступ к данным формы в моем файле javascript, но не могу это сделать. Вот:

Мой HTML:

var name = document.getElementById('loginForm').value;
console.info(name);
<form id = "loginForm">
  Username <input type = "text" name = "username" value = "Donald"><br> Password: <input type = "text" name = "password" value = "Duck"><br>
  <input type = "submit" value = "Submit" />
</form>
<script type = "module" src = "other.js"></script>

Причина, по которой я сделал это в отдельном файле javascript, заключается в том, что позже я буду вызывать API. Независимо от того, что я пробовал, «имя» всегда - это Дональд, а не то, что я ввожу в свою форму, и я не уверен, как я могу получить к нему доступ, если удалю значение из тегов ввода.

Любые советы приветствуются.

вам нужно выбрать тег ввода и получить значение попробуйте этот document.getElementsByTagName("input")[0].getAttribute("valu‌​e");

chintuyadavsara 29.10.2018 12:14

@Sara он уже получил значение 'name' is always Donald

Zakaria Acharki 29.10.2018 12:14

@ChintuYadavSara - Это только усугубит проблему. Значение атрибут (в отличие от свойства, которое они используют в настоящее время) всегда будет значением по умолчанию (поэтому, если они внесут изменение, которое вы предлагаете, у них будет два различных причин симптомов, которые они испытывают).

Quentin 29.10.2018 12:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
3
998
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы читаете значение вне какой-либо функции, поэтому значение будет таким, каким оно было в момент загрузки <script>.

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

Как вы это делаете, зависит от конкретного потом, о котором вы заботитесь. Скорее всего, вам следует привязать функцию как обработчик события. Возможно, к событию input текстового поля или событию submit формы.

var form = new FormData(document.getElementById("loginForm"));
var inputValue = form.get("username");
<form id = "loginForm">
  Username <input type = "text" name = "username" value = "Donald"><br> Password: <input type = "text" name = "password" value = "Duck"><br>
  <input type = "submit" value = "Submit" />
</form>
<script type = "module" src = "other.js"></script>

Вы обращаетесь к форме el, а не к входу el. Также вам нужен слушатель onchange.

var el = document.getElementsByName('username')[0];
var value = el.value;
console.info(value);//Donald

el.onchange = function(e){
   console.info(e.target.value); // new value any time you change it in the input
}

Надеюсь это поможет :)

Ответ принят как подходящий

Ваш скрипт будет вызываться при загрузке, что означает, что он всегда будет возвращать значение по умолчанию Donald.

Итак, чтобы получить новое значение, вы можете прикрепить событие щелчка к кнопке, тогда, когда вы нажмете, вы получите текущее значение, например:

document.getElementById('showName').addEventListener('click', function() {
  console.info(document.querySelector('[name = "username"]').value);
})
<form id = "loginForm">
  Username: <input type = "text" name = "username" value = "Donald">
  <br> Password: <input type = "text" name = "password" value = "Duck">
  <br>
  <input type = "button" value = "Show value" id = "showName" />
</form>

Также важно, что при обработке события отправки в форме вместо нажатия кнопки все несколько отличается.

Mark Schultheiss 29.10.2018 12:46

Причина, по которой он не показывает ничего другого, заключается в том, что вы получаете к нему доступ только изначально, а не после каких-либо изменений. для отправки или другого события. Чтобы получить доступ после изменения, вы должны отслеживать это событие изменения, то же самое для отправки, а затем обращаться к форме в обработчике событий для этого события.

var username = document.getElementById('username');
console.info(username.value);
var myform = document.getElementById('loginForm');

username.addEventListener('change', function(event) {
  console.info(event.type);
  console.info(event.target.value);
  console.info('Element change through function!');
});
myform.addEventListener('submit', function(event) {
  var thisform = this;// refer to form (see below)
  event.preventDefault(); // stop the submit for now
  event.stopImmediatePropagation();
  event.stopPropagation();
  console.info(thisform.password.value);//use form field by name
  console.info(event.type);// submit
  console.info(username.value);// from the id reference
  console.info('Form submit through function!');
  return false;
});
.label {
  display: block;
}
<form id = "loginForm">
  <label class = "label">Username: <input id = "username" type = "text" name = "username" value = "Donald"></label>
  <label class = "label">Password: <input type = "text" name = "password" value = "Duck"></label>
  <input type = "submit" value = "Submit" />
</form>
<script type = "module" src = "other.js"></script>

Привет, друзья, у вас опечатка в вашем коде в строке 14, sonsole.log('Form submit through function!'); должен быть console.info('Form submit through function!');

Haritsinh Gohil 29.10.2018 12:34

Другие вопросы по теме