我的表单使用HTML5' required'验证,我发现如果你试图在IE中提交表单,输入会以无效的伪类突出显示为红色 - 很好。
如果我然后填写表单并通过AJAX提交,则成功时发出form.reset(),将无效的伪类重新应用于表单元素,突出显示所有' required'输入为红色?
如何重置/清除表单,包括无效的伪类?
答案 0 :(得分:0)
我发现这是一个看似跨浏览器工作的理想解决方案。
只需将novalidate属性添加到表单,重置表单,然后将其删除 - 简单!
$('#my_form').attr('novalidate','novalidate');
$('#my_form').get(0).reset();
$('#my_form').removeAttr('novalidate');
更新:好的,好朋友我们有问题......
它修复了IE中的问题,但现在它在Firefox中引起了问题!
在Chrome和Opera中运行良好。
为什么当从表单中删除novalidate属性时,FF会运行验证检查?
不理想,但我想我总是可以使用......
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();
}
欢迎任何其他建议。
答案 1 :(得分:0)
您可以将整个表单标记存储到javascript变量,然后在提交或重置()时间后恢复为父元素,这将创建新表单&替换旧的形式,如..
//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);