HTML5'required'在表单重置时留下无效的伪类

时间:2014-06-04 14:58:40

标签: javascript jquery html5 forms

我的表单使用HTML5' required'验证,我发现如果你试图在IE中提交表单,输入会以无效的伪类突出显示为红色 - 很好。

如果我然后填写表单并通过AJAX提交,则成功时发出form.reset(),将无效的伪类重新应用于表单元素,突出显示所有' required'输入为红色?

如何重置/清除表单,包括无效的伪类?

2 个答案:

答案 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);