submitHandler和.validate()问题

最近我有把文件附加到电子邮件的问题,我处理,感谢你们各位顺便说一句。 现在我有下一个问题连接“固定”附加文件。 实际上有比我想象的更多的问题。 1)在下面的代码中,在validation插件中,我认为它应该调用像这样“名称:requred”的规则,但事实并非如此。 为了使它工作,我必须调用form class =“required”,为什么? 当我删除class =“requred”时,validation不再存在。

2)好的,所以class =“required”,小问题,validation工作正常,但是submitHandler会发生什么? ajax没有运行,网站刷新,我得到了成功的消息。 我的意思是发送带附件的电子邮件而不用刷新。

3)更糟糕的是,我写入upload_file规则的“消息”(应该显示何时未上传文件)不会出现,而是来自title属性(表单)的消息。

所以一切都不是我应该的。 我修理/修理/改变什么以使其有效? 请帮我

代码:forms:







<input type="file" name="uploaded_file" title="

Wybierz plik CV do przesłania

" class="required" id="uploaded_file">

Wysyłamy maila.....

validation:

 $("#formmail").validate({ rules: { email: { required: true, email: true }, name: { required: true }, message: { required: true }, uploaded_file: { requred: true } }, //koniec literału obiektowego rules messages: { email: { required: "

Podaj adres e-mail.

", email: "

To nie jest prawidłowy
adres e-mail.

" }, name: { required: "

Podaj swoje imię i nazwisko.

" }, message: { required: "

Wpisz treść listu motywacyjnego.

" }, uploaded_file: { requred: "

Prześlij plik CV

" } },submitHandler: function() { var thisForm = $('#formmail'); $('#formmail').fadeOut(function(){ //Display the "loading" message $("#loading-mail").fadeIn(function(){ //Post the form to the send script $.ajax({ type: 'POST', url: thisForm.attr("action"), data: thisForm.serialize(), //Wait for a successful response success: function(data){ //Hide the "loading" message $("#loading-mail").fadeOut(function(){ //Display the "success" message $("#success").text(data).fadeIn(); }); } }); }); }); } }); // koniec funkcji validate

并发送脚本:

 CharSet = "UTF-8"; $bodys="Podanie od: ".$_POST['name']."
"."Adres e-mail: ".$_POST['email']."
"."Treść listu motywacyjnego:
".$_POST['message']; $mail->Body =$bodys; $mail->IsSMTP(); // tell the class to use SMTP $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 25; // set the SMTP server port $mail->Host = "mail.xxx.linuxpl.info"; // SMTP server $mail->Username = "username"; // SMTP server username $mail->Password = "pass"; // SMTP server password $mail->IsSendmail(); // tell the class to use Sendmail $mail->AddReplyTo($_POST['email'],$_POST['name']); $mail->From = $_POST['email']; //uzupełnij sobie $mail->FromName = $_POST['name']; //uzupełnij sobie $to = 'xxx@gmail.com'; //na jaki mail wysłać np ala@wp.pl $mail->AddAddress($to); $mail->Subject = "Nowe podanie o pracę"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->WordWrap = 80; // set word wrap $mail->MsgHTML($bodys); $plik_tmp = $_FILES['uploaded_file']['tmp_name']; $plik_rozmiar = $_FILES['uploaded_file']['size']; $plik_nazwa = $_FILES['uploaded_file']['name']; if(is_uploaded_file($plik_tmp)) { $nazwa_g=$plik_nazwa; move_uploaded_file($plik_tmp, 'tmp_zal/'.$nazwa_g); $mail->AddAttachment('tmp_zal/'.$nazwa_g, $nazwa_g); } $mail->IsHTML(true); // send as HTML if(!$mail->Send()) { echo "Błąd"; echo "Kod błędu: " . $mail->ErrorInfo; } else { echo 'Wiadomość została wysłana'; } ?>

问题1和3是因为您在uploaded_file规则和消息中required拼写错误。

对于问题2,您需要从submitHandler return false以取消默认表单提交

 jQuery(function ($) { $("#formmail").validate({ rules: { email: { required: true, email: true }, name: { required: true }, message: { required: true }, uploaded_file: { required: true } }, //koniec literału obiektowego rules messages: { email: { required: "

Podaj adres e-mail.

", email: "

To nie jest prawidłowy
adres e-mail.

" }, name: { required: "

Podaj swoje imię i nazwisko.

" }, message: { required: "

Wpisz treść listu motywacyjnego.

" }, uploaded_file: { required: "

Prześlij plik CV

" } },submitHandler: function() { var thisForm = $('#formmail'); $('#formmail').fadeOut(function(){ //Display the "loading" message $("#loading-mail").fadeIn(function(){ //Post the form to the send script $.ajax({ type: 'POST', url: thisForm.attr("action"), data: thisForm.serialize(), //Wait for a successful response success: function(data){ //Hide the "loading" message $("#loading-mail").fadeOut(function(){ //Display the "success" message $("#success").text(data).fadeIn(); }); } }); }); }); return false } }); });

演示: 小提琴

注意 :由于表单中的文件输入,ajax提交将不起作用 – 对于某些替代方案,请参阅此答案