У меня есть проблема при использовании кнопок внутри формы. Я хочу, чтобы эта кнопка вызывала функцию. Это делает, но с нежелательным результатом, что он обновляет страницу.
Мой простой код выглядит так
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
При нажатии на кнопку, функция вызывается с обновленной страницей, которая сбрасывает все мои предыдущие запросы, которые влияют на текущую страницу, которая была результатом предыдущего запроса.
Что я должен сделать, чтобы предотвратить обновление страницы?
javascript
html
bunkdeath
источник
источник
Ответы:
Давай
getData()
вернем ложь. Это исправит это.источник
onclick
Функция должна возвращать ложь, а неgetData
.type="button"
это действительно подвох.Добавьте
type="button"
к кнопке.Значение по умолчанию
type
для кнопки - это тоsubmit
, что само публикует форму в вашем случае и делает ее похожей на обновление.источник
return false;
в onclick:onclick="getData(); return false;"
Все, что вам нужно сделать, это поставить тег типа и сделать кнопку типа.
Это решает проблему
источник
Проблема в том, что это вызывает отправку формы. Если вы сделаете
getData
функцию,return false
то она должна остановить отправку формы.В качестве альтернативы вы также можете использовать
preventDefault
метод объекта события:источник
HTML
JQuery
источник
вместо тега кнопки используйте тег ввода. Как это,
источник
button type='button'
Если вашей кнопкой по умолчанию является «кнопка», убедитесь, что вы полностью задали атрибут type, в противном случае WebForm будет рассматривать его как отправку по умолчанию.
если вы используете JS сделать так
источник
Метод JavaScript, чтобы отключить саму кнопку
Как только все поля формы соответствуют вашим критериям, вы можете снова включить кнопку
Использование Jquery будет примерно таким
источник
По любой причине в Firefox, хотя у меня есть
return false;
иmyform.preventDefault();
в функции, он обновляет страницу после запуска функции. И я не знаю, является ли это хорошей практикой, но она работает для меня, я вставляюjavascript:this.preventDefault();
в атрибут действия.Как я уже сказал, я попробовал все остальные предложения, и они отлично работают во всех браузерах, кроме Firefox. Если у вас возникла та же проблема, попробуйте добавить событие предотвращение в атрибут действия
javascript:return false;
илиjavascript:this.preventDefault();
. Не пытайтесь сjavascript:void(0);
чем взломать ваш код. Не спрашивай меня почему :-).Я не думаю, что это элегантный способ сделать это, но в моем случае у меня не было другого выбора.
Обновить:
Если вы получили сообщение об ошибке ... после обработки ajax, удалите действие атрибута и в
onsubmit
атрибуте выполните свою функцию с последующим ложным возвратом:onsubmit="functionToRun(); return false;"
Я не знаю, почему все эти проблемы с Firefox, но надеюсь, что это работает.
источник
Функция возврата работает не во всех случаях. Я попробовал это:
Это не сработало для меня.
Я попытался вернуть false внутри функции, и это сработало для меня.
источник
Я столкнулся с той же проблемой. Проблема с
onclick
функцией. Там не должно быть никаких проблем с функциейgetData
. Это сработало, заставивonclick
функцию возвращать false.источник
Это лучшее решение:
Примечание: мой код очень прост.
источник
Вы можете использовать ajax и jquery для решения этой проблемы:
источник