Если <button>
не имеет атрибута type
, то по умолчанию он равен type='"submit"
. Это не очевидно, если сказать, что <button>
не было в <form>
, но если это было в <form>
, то каждый щелчок инициировал бы поведение по умолчанию для события отправки:
Соберите все значения всех элементов управления формы, которые имеют атрибут [name]
, вложенный в <form>
.
Отправляет все значения на сервер, указанный атрибутом action
.
Сброс <form>
Итак, добавьте type="button"
к <button>
<button id='hidecontactbutton' type="button">...</button>
Что касается переключения состояния #contact
, вы должны указать #id кнопки, а затем переключать классы. Вы хотели иметь классы на кнопке вместо #contact
? $(this)
относится к тому, что было нажато (в этом контексте это должна быть кнопка).
$('#hideShow').on('click', hideShow);
function hideShow(e) {
if ($(this).hasClass('hide')) {
$(this).removeClass('hide').addClass('show').text('Hide Contact Form');
$('#contact').show();
} else {
$(this).removeClass('show').addClass('hide').text('Contact Us');
$('#contact').hide();
}
};
button {
display: inline-block;
width: 18ch;
cursor: pointer;
}
#contact {
display: none;
width: fit-content;
}
[type=submit] {
float: right
}
<button id='hideShow' class='hide' type='button'>Contact Us</button>
<form>
<fieldset id='contact'>
<legend>Contact Us</legend>
<label for='email'>Email: </label><br>
<input type='email'><br>
<label for='email'>Comment: </label><br>
<textarea></textarea><br>
<button type='submit'>Send</button>
</fieldset>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>