javascript - Jquery如何检查所有输入是否都有值

标签 javascript jquery

我有一个模式,用户可以在其中填写表格。当用户出于某种原因决定中止填写表单并单击关闭按钮时,用户将收到类似“您确定吗?所有数据都将丢失!”的警告

到目前为止,它工作正常,但是当没有输入任何内容并且用户关闭模式时,带有消息的警报仍然显示,我该如何避免这种情况?或者甚至更好 - 我可以批准我的验证吗?

$('#uploadModal [data-btn="close-modal"]').on("click", e => {
   if ($(".text-success").is(":visible")) {
       $('#uploadModal [data-dismiss="modal"]').click();
   } else {
       let validate = false;
       $("#uploadModal .form-row").each(function() {
          if (
            $("#uploadModal .form-row input").val() != "" ||
            $("#uploadModal .form-row input[type=file]").val() != "" ||
            $("#uploadModal .form-row textarea").val() != "" ||
            $("#uploadModal .form-row select").val() != "" ||
            $("#uploadModal .form-row input").attr("checked")
          )
            validate = true;
       });

       if (!validate) {
           $('#uploadModal [data-dismiss="modal"]').click();
       } else {
           if (confirm("Are you sure? All entered data will be lost")) {
               $('#uploadModal [data-dismiss="modal"]').click();
           }
       }
   }
});

更新

由于很多人问,我真的只是使用了很多简单的输入字段

<input type="text" name="name" placeholder="name" />
<input type="file" name="attachment" placeholder="Files" />
<textarea name="bio" placeholder="your bio"><textarea/>
<input type="checkbox" name="current" />

这就是全部,我没有在其中任何一个上使用required

最佳答案

您可以为所有空值维护另一个变量,基于该变量您可以显示消息:

$('#uploadModal [data-btn="close-modal"]').on("click", e => {
  if ($(".text-success").is(":visible")) {
    $('#uploadModal [data-dismiss="modal"]').click();
  } else {
   let validate = false;
   let allEmpty = false;
   $("#uploadModal .form-row").each(function() {
      if (
        $("#uploadModal .form-row input").val() != "" ||
        $("#uploadModal .form-row input[type=file]").val() != "" ||
        $("#uploadModal .form-row textarea").val() != "" ||
        $("#uploadModal .form-row select").val() != "" ||
        $("#uploadModal .form-row input").attr("checked")
      )
        validate = true;
      else if(
        $("#uploadModal .form-row input").val() == "" &&
        $("#uploadModal .form-row input[type=file]").val() == "" &&
        $("#uploadModal .form-row textarea").val() == "" &&
        $("#uploadModal .form-row select").val() == "" &&
        !$("#uploadModal .form-row input").("checked")
      )
       allEmpty = true;
   });

   if (!validate) {
       $('#uploadModal [data-dismiss="modal"]').click();
   } else if(!allEmpty) {
       if (confirm("Are you sure? All entered data will be lost")) {
           $('#uploadModal [data-dismiss="modal"]').click();
       }
    }
  }
});

关于javascript - Jquery如何检查所有输入是否都有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60707477/

相关文章:

javascript - 未设置系统日期时如何获取客户端的时区?

javascript - 如何使用 JavaScript 比较字符串变量

javascript - 编辑 React 组件的 CSS

jquery - 如何创建一个 3 级垂直 Accordion 菜单,其中包含打开和关闭 1 级和 2 级的图标,同时保持实际链接可点击?

javascript - 单击时选择第一组 div

javascript - 如何使用递归对三个值求和 - Javascript

javascript - 在内部创建对象实例

javascript - 从外部点击事件调用 jQuery 插件内的函数

javascript - 对具有多个值的查询字符串参数使用 indexof

javascript - 双击文本使其可复制