我有一个表单,使用HTML5的'required'验证,我发现如果您尝试在IE中提交表单,则使用无效伪类将输入突出显示为红色 - 没问题。
如果我完成表单并通过AJAX提交它,然后在成功时发出form.reset(),则将重新应用无效的伪类到表单元素,将所有'required'输入突出显示为红色?
如何完全重置/清除表单,包括无效的伪类?
我有一个表单,使用HTML5的'required'验证,我发现如果您尝试在IE中提交表单,则使用无效伪类将输入突出显示为红色 - 没问题。
如果我完成表单并通过AJAX提交它,然后在成功时发出form.reset(),则将重新应用无效的伪类到表单元素,将所有'required'输入突出显示为红色?
如何完全重置/清除表单,包括无效的伪类?
$('#my_form').attr('novalidate','novalidate');
$('#my_form').get(0).reset();
$('#my_form').removeAttr('novalidate');
更新:好的,休斯顿,我们有问题了...
它已经修复了IE中的问题,但现在在Firefox中引起了问题!
在Chrome和Opera中运行良好。
为什么FF会在从表单中删除novalidate属性时运行验证检查?
不是理想的解决方案,但我想我总能使用...
if(/trident/i.test(navigator.userAgent))
{
$('#my_form').attr('novalidate','novalidate');
$('#my_form').get(0).reset();
$('#my_form').removeAttr('novalidate');
}
else
{
$('#my_form').get(0).reset();
}
您可以将整个表单标签存储到JavaScript变量中,然后在提交或重置(reset())时间后将其恢复到父元素,这将创建一个新的表单并替换旧表单,如下所示:
//store after page load to reset when require-
var oldfrmcode=jQuery('.formcontainer').html();
//place following code to reset form require place
jQuery('.formcontainer').html(oldfrmcode);