html中用于规定输入字段,Polyfill HTML5表单属性(用于输入字段)

我写这个polyfill来模拟这样的功能,通过在表单提交时复制字段,在IE6中测试,它工作正常.

(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 || sampleElement instanceof window.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) {

$('')

.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) {

// serialize data

var data = $('[form='+ this.id + ']').serializeArray();

// append data to form

$(this).appendField(data);

}).each(function() {

var form = this,

$fields = $('[form=' + this.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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值