Форма отправки через AJAX, несмотря на отказ от проверки

99
10

Я новичок в Ajax, и я хотел использовать его с формой контакта, которая в настоящее время используется. Форма настроена для запуска JS (fieldchk()) для проверки требуемых полей, а затем отправляет электронное письмо соответствующей стороне.

Я правильно настроил Ajax, так как электронное письмо отправлено и на одной странице отображается сообщение:

$('form').on('submit', function(event) {
event.preventDefault();
return fieldchk();
var url = $(this).attr('action');
var formData = $(this).serialize();
$.post(url, formData, function(response){
$('#feedback_form').html("<p>Thanks for contacting us!</p>");
});
});

Изменить: теперь форма проверяется, и если она действительна, она не отправляет электронное письмо. Теперь валидация работает правильно.

Вот мой код формы:

<form 
name="feedback"
action="feedbackact.cfm?type=feedback"
method="post"
enctype="multipart/form-data"
>

Это код, который я использую для проверки формы:

function fieldchk() {
errmsg = '';
if (document.feedback.name.value == ''){
errmsg = errmsg + 'You must enter your name.\n';
}

... all the fields get checked like this ...

if (errmsg > ''){
alert(errmsg);
return false;
}
}

спросил(а) 2021-01-25T12:01:25+03:00 4 месяца, 2 недели назад
1
Решение
63

Вам нужно будет добавить некоторый тип проверки в вашу функцию JavaScript. Я бы изменил разметку

<form 
name="feedback"
action="feedbackact.cfm?type=feedback"
method="post"
enctype="multipart/form-data"
>

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

Однако я бы сделал это по-другому:

HTML:

<form name='feedback'><!--inputs--></form>

JavaScript:
$('form[name="feedback"]').on('submit', function() {

var formData = this.serializeArray();

if ( fieldcheck( formData) ) { //verifying the form data is correct

$.post(); //post data

Coldfusion.navigate("feedbackact.cfm?type=feedback");

}

else { alert('not filled out correctly!') }

});

ответил(а) 2021-01-25T12:01:25+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема