Предотвратить перезагрузку страницы после установки значения поля ввода

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

Я использую javascript для события нажатия кнопки. Он устанавливает значение скрытого поля ввода, но сразу после этого страница перезагружается, и значение исчезает.

Я пробовал запускать с самой кнопки (onclick = "generateAPI()"), пробовал устанавливать значение (document.getelementByID().value = "")

    <label>Username:</label><input id = "um_user" type = "text" "name = "um_username"></br>
    <label>Password:</label><input id = "um_pass" type = "password" name = "um_password"></br>
    <input type = "text" id = "um_apikey" name = "um_versio_setting_apikey" value = "<?php echo isset( $setting ) ? esc_attr( $setting ) : ''; ?>">
    <button id = "versioapi">Generate API Key</button>
    <script>
    document.getElementById("versioapi").onclick = function() {generateAPI()};
    function generateAPI() {
    user = document.getElementById("um_user").value;
    pass = document.getElementById("um_pass").value;
    document.getElementById("um_apikey").setAttribute('value','My default value');
   </script>

Я ожидаю, что в поле ввода "um_apikey" будет установлено значение, а страница не будет перезагружена, поэтому пользователь может продолжить заполнение формы и, когда закончит, сохранит ее.

используйте preventDefault() при нажатии кнопки.

random 09.07.2019 14:13

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

Phillip 09.07.2019 14:14
Поведение ключевого слова "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) для оценки ваших знаний,...
0
2
289
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Установите тип кнопки «кнопка».

<button type = "button" id = "versionapi">Generate API key</button>

В противном случае, не указывая его тип, он действует как <button type = "submit">. См. этот ответ для более подробного объяснения.

Кроме того, вы можете зафиксировать клик с помощью JS и предотвратить действие по умолчанию с помощью preventDefault().

Большое спасибо! Именно то, что мне нужно

IJsbrand Schipperus 09.07.2019 14:48

jQuery:

$("#versioapi").click(function(event) {
  event.preventDefault();
});

Ванильный JavaScript

document.getElementById("versioapi").addEventListener("click", function(event){
  event.preventDefault()
});

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