【问题标题】:HTML5 required fix for IE and SafariIE 和 Safari 需要修复 HTML5
【发布时间】:2015-11-07 04:56:30
【问题描述】:

尝试在 IE

这是我用来尝试完成此操作的脚本,但它不起作用。如有必要,寻求反馈或耳光。 form id = "sendit"

$("#sendit").submit(function() {
 if (!attributeSupported("required") || ($.browser.safari)) {
  $("#sendit [required]").each(function(index) {
   if (!$(this).val()) {
    alert("Please fill all required fields.");
    return false;
    }
  });
 }
}); 

【问题讨论】:

  • 改用 $("#sendit [required=required]")
  • 你使用的是哪个旧版本的 jQuery,$.browser 可以工作?
  • 试试 $("#sendit input[required=required]") 可能,attr 选择器有时有点特殊
  • 您应该像这样检查支持:stackoverflow.com/questions/8550642/… 不使用嗅探浏览器。您是否调试了代码以查看失败的原因? console.log() 是你的朋友。
  • @epascarello 控制台说我在参数列表之后缺少),但我没有看到。感谢您指出这是旧代码。我从您的链接中删除了 $.browser if 语句并将其替换为 ! 版本的 if 语句

标签: html forms validation required


【解决方案1】:

这是一个旧帖子,但我看到它没有得到答复。您的代码的问题是您在“每个”函数中有“返回错误”。这打破了每个循环,但不会停止表单提交。我只想删除浏览器检查,因为任何支持 html5 表单验证的浏览器都会通过测试。所以你应该可以把代码改成这样:

$("#sendit").submit(function() {
  var valid = true;
  $("#sendit [required]").each(function(index) {
    if (!$(this).val()) {
      alert("Please fill all required fields.");
      valid = false
      $(this).focus();
      return false;
    }
  });
  if (!valid) {
    return false;
  }
  
  // anything else that need to be done on submit
});

请注意,我还添加了一行来聚焦表单域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多