gpt4 book ai didi

jquery - 按钮元素的 HTML5 表单属性的 Internet Explorer 问题

转载 作者:技术小花猫 更新时间:2023-10-29 12:36:12 25 4
gpt4 key购买 nike

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

<form id="myform" method="get" action="something.jsp">
<input type="text" name="name" />
</form>
<input type="submit" form="myform" />

以上代码在 IE 中不工作。谁能帮我解决这个需求。

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

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

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

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

最佳答案

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/

顺便查一下this page测试您的浏览器当前支持多少 HTML5 功能。例如,我使用的是 Chrome 31,它支持这个属性。

Chrome currently supports the feature

关于jquery - 按钮元素的 HTML5 表单属性的 Internet Explorer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com