用于按钮元素的HTML5表单属性的Internet Explorer问题

 手浪用户2602928705 发布于 2023-02-09 14:32

在HTML5中,有form属性.基本上

上面的代码在IE中不起作用.任何人都可以帮我解决这个问题.

我使用了以下javascript和jQuery来提交表单,但我遇到了Ajax问题.我的页面正在重新加载.

document.getElementById("myForm").submit();

$("#myForm").submit();

如何在我的页面不应加载的地方提交表单.我正在使用Anguler JS Ajax.

2 个回答
  • IE不支持HTML5 form属性<input><button>元素.

    如果要将外部输入元素与表单关联,可以将"阴影"复制为表单内的不可见输入字段,并将事件处理程序附加到表单的onsubmit事件.当用户提交表单时,更新其中的值.

    以下polyfill(需要jQuery)模拟该功能.它使具有form属性的输入元素表现得像它们在表单中:

    (function($) {
      /**
       * polyfill for html5 form attr
       */
    
      // detect if browser supports this
      var sampleElement = $('[form]').get(0);
      var isIE11 = !(window.ActiveXObject) && "ActiveXObject" in window;
      if (sampleElement && window.HTMLFormElement && sampleElement.form instanceof HTMLFormElement && !isIE11) {
        // browser supports it, no need to fix
        return;
      }
    
      /**
       * Append a field to a form
       *
       */
      $.fn.appendField = function(data) {
        // for form only
        if (!this.is('form')) return;
    
        // wrap data
        if (!$.isArray(data) && data.name && data.value) {
          data = [data];
        }
    
        var $form = this;
    
        // attach new params
        $.each(data, function(i, item) {
          $('<input/>')
            .attr('type', 'hidden')
            .attr('name', item.name)
            .val(item.value).appendTo($form);
        });
    
        return $form;
      };
    
      /**
       * Find all input fields with form attribute point to jQuery object
       * 
       */
      $('form[id]').submit(function(e) {
        var $form = $(this);
        // serialize data
        var data = $('[form='+ $form.attr('id') + ']').serializeArray();
        // append data to form
        $form.appendField(data);
      }).each(function() {
        var form = this,
          $form = $(form),
          $fields = $('[form=' + $form.attr('id') + ']');
    
        $fields.filter('button, input').filter('[type=reset],[type=submit]').click(function() {
          var type = this.type.toLowerCase();
          if (type === 'reset') {
            // reset form
            form.reset();
            // for elements outside form
            $fields.each(function() {
              this.value = this.defaultValue;
              this.checked = this.defaultChecked;
            }).filter('select').each(function() {
              $(this).find('option').each(function() {
                this.selected = this.defaultSelected;
              });
            });
          } else if (type.match(/^submit|image$/i)) {
            $(form).appendField({name: this.name, value: this.value}).submit();
          }
        });
      });
    
    
    })(jQuery);
    

    实时版:http://jsfiddle.net/hbxk4e61/

    顺便说一句,您可以查看此页面以测试您的浏览器当前支持的HTML5功能的数量.例如,我使用的是Chrome 31,它确实支持此属性.

    Chrome目前支持该功能

    2023-02-09 14:33 回答
  • 好吧,IE基本上不支持输入中的表单属性,但您可以使用javascript来提交表单:

    document.getElementById("myForm").submit();
    

    或jQuery

    $("#myForm").submit();
    

    2023-02-09 14:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有