commitHandler 和 .validate() 问题

2024-03-22

最近我在将文件附加到电子邮件中时遇到问题,我处理了这个问题,顺便说一句,谢谢你们。现在我遇到了与“固定”附加文件有关的下一个问题。 其实问题比我想象的还要多。 1)在下面的代码中,在验证插件中,我认为调用类似“名称:必需”的规则就足够了,但事实并非如此。为了使其正常工作,我必须以 class="required" 的形式调用,为什么?当我删除 class="requred" 时,验证不再存在。

2) 好吧,所以 class="required",小问题,验证正在工作,但是 SubmitHandler 发生了什么? ajax 不运行,网站刷新,我收到成功消息。我的观点是发送带有附件的电子邮件而无需刷新。

3)更糟糕的是,我写入 uploaded_file 规则的“消息”(该消息应该在文件未上传时显示)没有出现,而是从标题属性(以表单形式)插入了消息。

所以一切都不是我应该经历的。我应该修复/修复/更改什么才能使其正常工作?请帮我

代码: 形式:

 <form method="post" name="formularzaplikacyjny" enctype="multipart/form-data" action="mail-attachment.php" id="formmail"> 

        <div id="imiediv"><label for="name">Imię i nazwisko: <em>*</em> </label><br>
                        <input type="text" name="name" id="name" class="required" title="Wpisz swoje imię i nazwisko" placeholder="Jan Kowalski"></div><br>

        <div id="emaildiv"><label for="email">Email: <em>*</em> </label><br>
                        <input type="text" name="email" class="required" id="email"  title="Wpisz swój adres email" placeholder="[email protected] /cdn-cgi/l/email-protection"></div><br>

        <div id="listdiv"><label for="message">List motywacyjny: <em>*</em></label><br>
                        <textarea name="message" rows="5" cols="48" class="required" id="message" title="Wpisz treść listu motywacyjnego"  placeholder="Tutaj zpowinna znaleźć się treść Twojego listu motywacyjnego" ></textarea></div>

        <div id="cvdiv"><label for="uploaded_file">Wybierz plik CV: <em>*</em></label><br>
                        <input type="file" name="uploaded_file" title="<h3>Wybierz plik CV do przesłania</h3>" class="required" id="uploaded_file"></div><br>

                        <input type="submit" value="Prześlij" name="submit" id="submitbutton">
                        </form>

                        <div id="loading-mail">
                            <h2>Wysyłamy maila.....</h2>
                          </div>

验证 :

$("#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: "<h3>Podaj adres e-mail.</h3>",
         email: "<h3>To nie jest prawidłowy <br>adres e-mail.</h3>"
       },
       name: {
         required: "<h3>Podaj swoje imię i nazwisko.</h3>"
       },
      message: {
        required: "<h3>Wpisz treść listu motywacyjnego.</h3>"
      },
      uploaded_file: {
        requred: "<h3>Prześlij plik CV</h3>"
     }
   },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  

并发送脚本:

<?php
require "PHPMailer/class.phpmailer.php";



$mail = new PHPMailer(true); //New instance, with exceptions enabled

$mail->CharSet = "UTF-8";
$bodys="<b>Podanie od:</b> ".$_POST['name']."<br/>"."<b>Adres e-mail: </b>".$_POST['email']."<br/>"."<b>Treść listu motywacyjnego: </b><br/>".$_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 = '[email protected] /cdn-cgi/l/email-protection'; //na jaki mail wysłać np [email protected] /cdn-cgi/l/email-protection



$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 是因为您拼写错误required as requred in the uploaded_file规则和消息。

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

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: "<h3>Podaj adres e-mail.</h3>",
                email: "<h3>To nie jest prawidłowy <br>adres e-mail.</h3>"
            },
            name: {
                required: "<h3>Podaj swoje imię i nazwisko.</h3>"
            },
            message: {
                required: "<h3>Wpisz treść listu motywacyjnego.</h3>"
            },
            uploaded_file: {
                required: "<h3>Prześlij plik CV</h3>"
            }
        },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
        }
    }); 
});

Demo: Fiddle http://jsfiddle.net/arunpjohny/fNvX9/

Note:由于表单中的文件输入,ajax 提交将不起作用 - 对于某些替代方案,请参见这个答案 https://stackoverflow.com/questions/18928318/issues-with-jquery-validation-plugin-and-input-file/18928348#18928348

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

commitHandler 和 .validate() 问题 的相关文章

随机推荐

  • 比较 MAC OSX 中 Bash 中的两个日期

    我是 Bash 新手 提前道歉 Set up 我有一个特定的结束日期end这取决于特定的开始日期s和周期长度p这样 end s p Problem 当且仅当今天的日期早于或等于结束日期时 我想执行命令 即 执行命令iffdate end C
  • 将自定义字符串转换为日期时间格式

    我有一个日期时间数据字符串列表 如下所示 list 2016 08 02T09 20 32 456Z 2016 07 03T09 22 35 129Z 我想将其转换为示例格式 对于第一项 8 2 2016 9 20 32 AM 我试过这个
  • 以编程方式格式化谷歌图表

    使用以下代码如何设置格式以便CurrencyValue1和CurrencyValue2在图表中显示为美元 作为货币值 function drawChart var data new google visualization DataTabl
  • 在 PictureBox 上绘制折线

    我想在以下位置绘制折线 由一条或多条线段组成的连续线 PictureBox 在这里 我们可以通过指定每个线段的端点来创建多条线 并计算每个线段的距离 即每条线的距离 如果您想在图片框上执行此操作 最简单的方法是从PictureBox并提供当
  • 以编程方式从我的 java webapp 读取静态资源 [重复]

    这个问题在这里已经有答案了 目前 我的 war 文件中有一堆图像 如下所示 WAR ROOT WEB INF IMAGES image1 jpg image2 jpg index html 当我通过 servlet jsp etc 生成 h
  • Firebase-perf 与 let 插件冲突

    最近 我们被要求在 Android 应用程序上实现 Firebase 性能监控 但它给我们带来了许多不同的问题 该应用程序曾经工作得很好 但是在添加 firebase perf 后 它可以编译 但在运行时我们发现让插件 https gith
  • 在 Javascript/jQuery 中解码 base64 文件以供下载

    今天我一直在尝试 SQL 二进制对象 我首先将图像存储在表中 发出 AJAX 请求以对图像进行 Base64 编码 然后使用 来显示它 img src 图像显示良好 我正在从事的网络项目也需要文件下载 主要是 PDF 太棒了 我想 我也将
  • 无法创建新的雅虎应用程序

    这个链接过去一直很挑剔 现在似乎完全失效了 https developer yahoo com apps create https developer yahoo com apps create 是不是不能再创建 Yahoo 应用程序了 N
  • PHPhotoLibrary.requestAuthorization() 在 iOS 9 上不触发授权提示

    我有以下功能 显示带有两个不同选项的操作表 目前 唯一实施的选项是标题为 照片 的选项 正确呈现操作表并调用正确的操作 我的问题是 在模拟器和实际设备上 我无法显示请求访问照片库的提示 PHPhotoLibrary authorizatio
  • 由于行高与垂直对齐冲突,文本被截断:顶部

    我有一个表格 其中包含一个表格内格式类似于文本的提交按钮 一般情况下 所有表行都设置为vertical align top 如果我不对格式化文本应用行高 则其底部部分将被切断 如以下字母所示p q等等 小提琴的底部 如果我确实将其应用行高
  • Xcode 12 - 下载更多模拟器运行时为空

    I can t add more simulator OS version in XCode 12 for example iOS 13 the list is empty 如何添加更多不同ios版本的模拟器 我遇到了完全相同的问题 苹果返
  • 以 cweb 或 noweb 样式导出代码块名称?

    在 Org 模式下编写 Lite 程序时 导出类似于在早期的 Lite 编程工具 例如 cweb 或 noweb 中编织 这些工具会将代码块名称添加到编织 导出 输出中 在组织模式下 它看起来像这样 组织文件 NAME mycodebloc
  • Firestore.firestore() 失败并显示“类型‘Firestore’没有成员‘firestore’”

    我正在尝试为我的 Firestore 设置数据库 但是我尝试重新安装 Pod 和许多其他东西 但我仍然无法让它工作 因为它显示了以下错误 Type Firestore has no member firebase 我不知道为什么会这样 因为
  • Javascript 保持 div 隐藏,直到您单击按钮,需要帮助修改

    基本上 我的代码现在隐藏了我网站上的一些 div 然后当您单击链接时 它会使 div 出现 我需要帮助 以便当我单击一个链接时出现一个 div 然后单击另一个链接时 前一个链接会消失 假设我点击 关于 链接 div 出现了 很好 然后我点击
  • 汇编中的蛇,使用什么数据结构?

    我对汇编完全陌生 不管你信不信 我们的第一个任务是在汇编中创建蛇 我应该如何储存蛇 我应该把它放在堆栈中 还是应该将它放入某个寄存器中 我已经对这种 可怕的 语言进行了大约 3 天的研究 但无法找到一个好的开始方法 我可能会在 c 中使用某
  • 如何用Java读取.EXE文件的内容

    在 Java 中读取可执行文件有哪些可能的选项和最合适的选项 我想生成 exe 文件的十六进制表示形式 我正在考虑以二进制方式读取文件 然后进行转换 但是我怎样才能读取 exe呢 1 以字节形式读取文件 使用 BufferedInputSt
  • 在单个 RecyclerView 中使用来自 Firestore 和 Firebase RTDB 的数据

    我有一个 RecyclerView 它由存储在 Firestore 数据库中的帖子填充 每个帖子都被编写为具有唯一 postID 的文档 存储发布的消息 时间戳和点赞计数器 mUploads is defined as private Li
  • 如何解析 C# 的命令行输出?

    我想从 C 执行一个应用程序 命令行应用程序 并且我想在执行该应用程序并向其提供输入后 我想解析将产生它的输出 因为 它会输出很多东西 而我想从中获取我需要的东西 我怎样才能做到这一点 我怎样才能得到c 中的输出 然后只从中获取我需要的东西
  • Tensorflow:计算关于高阶张量的 Hessian 矩阵(仅对角部分)

    我想计算我指定的损失相对于 vgg16 conv4 3 层内核 3x3x512x512 维矩阵 的每个特征图的一阶和二阶导数 Hessian 的对角部分 如果根据以下公式尊重低阶导数 我知道如何计算导数如何在Tensorflow中计算所有二
  • commitHandler 和 .validate() 问题

    最近我在将文件附加到电子邮件中时遇到问题 我处理了这个问题 顺便说一句 谢谢你们 现在我遇到了与 固定 附加文件有关的下一个问题 其实问题比我想象的还要多 1 在下面的代码中 在验证插件中 我认为调用类似 名称 必需 的规则就足够了 但事实