如果文件类型不为空,如何删除验证

Posted

技术标签:

【中文标题】如果文件类型不为空,如何删除验证【英文标题】:How to remove the validation if the file type is not empty 【发布时间】:2021-07-31 01:16:15 【问题描述】:

我正在将文件夹中的个人资料图片和横幅图片和名称上传到数据库中。 我已添加以下 2 个文件并将它们插入到数据库和文件夹中。

现在,我不想更新文件,但是当我提交时,我收到了验证错误消息。我知道我的文件类型为空,我正在预览图像。

如果文件为空,我必须设置验证。

$("form[name='myprofile']").validate(
  rules: 
    file1: 
      required: true,
      extension: "png|jpe?g",
    ,
    file2: 
      required: true,
      extension: "png|jpe?g",
    

  ,
  messages: 
    file1: 
      extension: "Please upload jpeg or png image",
    ,
    file2: 
      extension: "Please upload jpeg or png image",
    
  ,



  submitHandler: function(form) 
    form.submit();
  
);
input[type="file"] 
  padding-bottom: 45px;
<form action="process.php" method="post" name="myprofile" enctype="multipart/form-data" id="myprofile">
  <input type="file" name="file1"><br />
  <input type="hidden" name="file1" value="<?php echo $info['file1'];?>">
  <!--store image name image-->
  <img src="assets/images/<?php echo $info['file1'];?>">
  <!--Preview image-->
  <input type="file" name="file2"><br />
  <input type="hidden" name="file2" value="<?php echo $info['file2'];?>">
  <!--store image name image-->
  <img src="assets/images/<?php echo $info['file2'];?>">
  <!--Preview image-->

  <input type="submit" name="submit" value="submit">

</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/additional-methods.min.js"></script>

【问题讨论】:

您可以使用.rules()方法动态更改规则和规则参数。请参考网站上的文档和 SO 上的示例。 【参考方案1】:

由于文件名的值存储在 hidden 输入中,您可以检查与特定文件相关的隐藏输入是否具有值,具体取决于您设置的 required 属性 true 或 false。

演示代码

$("form[name='myprofile']").validate(
  rules: 
    file1: 
      required: function() 
        //check if the hidden input related to file is empty if yes return true else false..
        return $("[type=file][name=file1]").nextAll("[type=hidden]:first").val() == ""
      ,
      extension: "png|jpe?g",
    ,
    file2: 
      required: function() 
        //same here
        return $("[type=file][name=file2]").nextAll("[type=hidden]:first").val() == ""
      ,
      extension: "png|jpe?g",
    

  ,
  messages: 
    file1: 
      extension: "Please upload jpeg or png image",
    ,
    file2: 
      extension: "Please upload jpeg or png image",
    
  ,



  submitHandler: function(form) 
    form.submit();
  
);
input[type="file"] 
  padding-bottom: 45px;
<form action="process.php" method="post" name="myprofile" enctype="multipart/form-data" id="myprofile">
  <input type="file" name="file1">
  <br />
  <input type="hidden" name="file1" value="<?php echo $info['file1'];?>">
  <img src="assets/images/<?php echo $info['file1'];?>">
  <input type="file" name="file2"><br />
  <input type="hidden" name="file2" value="">
  <img src="assets/images/<?php echo $info['file2'];?>">
  <input type="submit" name="submit" value="submit">

</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/additional-methods.min.js"></script>

【讨论】:

这是使用隐藏输入框的正确方法吗? 您在谈论您的 html,即:您存储文件名的方式? 是的,这是正确的使用方法吗?我的意思是我们可以在文件类型中显示值而不是隐藏字段 不,你不能像那样在file type 中显示价值。 是的,我查过了。谢谢你的链接。我检查了你的sn-p。我没有得到这两个文件的验证。

以上是关于如果文件类型不为空,如何删除验证的主要内容,如果未能解决你的问题,请参考以下文章

关于File类如何删除不为空的文件夹(未解决有待完善)

如果 Laravel 中的值不为空,如何验证输入字段

如何判断int类型为空或null

ubuntu文件类型没有颜色区分,如何解决

Java中如何判断数组元素是不是为空

SQL SERVER 如果判断text类型数据不为空