Ответ 1
Пусть getData()
вернет false. Это исправит это.
<form method="POST">
<button name="data" type="button" onclick="getData()">Click</button>
</form>
У меня проблема при использовании кнопок внутри формы. Я хочу, чтобы эта кнопка вызывала функцию. Он делает, но с нежелательным результатом, что он обновляет страницу.
Мой простой код выглядит следующим образом
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
При нажатии кнопки функция вызывается с обновленной страницей, которая сбрасывает весь мой предыдущий запрос, который влияет на текущую страницу, которая была результатом предыдущего запроса.
Что делать, чтобы предотвратить обновление страницы?
Пусть getData()
вернет false. Это исправит это.
<form method="POST">
<button name="data" type="button" onclick="getData()">Click</button>
</form>
Добавьте к кнопке тип = "button".
<button name="data" type="button" onclick="getData()">Click</button>
Значение по умолчанию для "type" для кнопки "submit", которое автоматически отправляет форму в вашем случае и делает ее похожим на обновление.
Проблема в том, что это вызывает отправку формы. Если вы сделаете функцию getData
return false
, то она должна остановить отправку формы.
В качестве альтернативы вы также можете использовать метод preventDefault
объекта события:
function getData(e) {
e.preventDefault();
}
Все, что вам нужно сделать, это поместить тег типа и сделать кнопку типа.
<button id="btnId" type="button">Hide/Show</button>
<form onsubmit="return false;" id="myForm">
</form>
$('#myForm').submit(function() {
doSomething();
});
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
вместо использования тега кнопки используйте тег ввода. Как это,
<form method="POST">
<input type = "button" name="data" onclick="getData()" value="Click">
</form>
Метод javascript для отключения самой кнопки
document.getElementById("ID NAME").disabled = true;
Как только все поля формы удовлетворяют вашим критериям, вы можете снова включить кнопку
Использование JQuery будет чем-то вроде этого
$( "#ID NAME" ).prop( "disabled", true);
Если ваша кнопка является кнопкой по умолчанию, убедитесь, что вы установили атрибут type, иначе WebForm будет рассматривать его как отправку по умолчанию.
если вы используете JS сделать так
<form method="POST">
<button name="data" type="button" id="btnData" onclick="getData()">Click</button>
</form>
**If you use jquery use like this**
<form method="POST">
<button name="data" type="button" id="btnData">Click</button>
</form>
$('#btnData').click(function(e){
e.preventDefault();
// Code goes here
getData(); // your onclick function call here
});
По какой-либо причине в Firefox, хотя у меня есть return false;
и myform.preventDefault();
в функции, она обновляет страницу после запуска функции. И я не знаю, является ли это хорошей практикой, но она работает для меня, я вставляю javascript:this.preventDefault();
в атрибут действия.
Как я уже сказал, я пробовал все другие предложения, и они отлично работают во всех браузерах, но Firefox, если у вас такая же проблема, попробуйте добавить событие предупреждения в атрибут действия либо javascript:return false;
, либо javascript:this.preventDefault();
. Не пытайтесь использовать javascript:void(0);
, который нарушит ваш код. Не спрашивайте меня, почему: -).
Я не думаю, что это элегантный способ сделать это, но в моем случае у меня не было другого выбора.
Update:
Если вы получили сообщение об ошибке... после обработки ajax, затем удалите действие атрибута и в атрибуте onsubmit
, выполните свою функцию, а затем ложное возвращение:
onsubmit="functionToRun(); return false;"
Я не знаю, почему все эти проблемы с Firefox, но надеюсь, что это сработает.
Функция возврата не работает во всех случаях. Я пробовал это:
<button id="Reset" class="Button-class" onclick="return Reset()">Show result</button>
Это не помогло мне.
Я попытался вернуть false внутри функции, и это сработало для меня.
function Reset()
{
.
.
.
return false;
}
Я столкнулся с той же проблемой. Проблема с функцией onclick
. Не должно быть никаких проблем с функцией getData
. Это сработало, заставив функцию onclick
вернуть false.
<form method="POST">
<button name="data" onclick="getData(); return false">Click</button>
</form>
Это лучшее решение:
<form method="post">
<button type="button" name="data" onclick="getData()">Click Me</button>
</form>
Примечание: мой код очень прост.
Вы можете использовать ajax и jquery для решения этой проблемы:
<script>
function getData() {
$.ajax({
url : "/urlpattern",
type : "post",
success : function(data) {
alert("success");
}
});
}
</script>
<form method="POST">
<button name="data" type="button" onclick="getData()">Click</button>
</form>