我在.submit中编写了一个自定义javascript / jQuery验证函数,并使用reportValidity函数()来获取那些工具提示气泡,但是在开发过程中了解到,它仅在Opera和Chrome中可以完全正常工作。显然,reportValidity()在IE,Safari和FF中无法以相同的方式工作。

在FF中,它将至少将用户带到不完整的问题,但不会像chrome和Opera那样提供自动工具提示来通知用户。

Safari和IE显然可以正确验证,但没有任何部分不完整的迹象。

解决此问题的方法是什么,即一种获得与Chrome或Opera类似的行为的方法?

最佳答案

这是我所做的:

document.forms[0].getElementsByTagName("input")[0].setCustomValidity("Please fill out at least one of these fields.");
    try {
        document.forms[0].reportValidity();
    }
    catch (e){ //for browsers that don't support reportValidity
        $($('input')[0]).popover({
            placement:'right',
            trigger:'manual',
            html:true,
            content:'Please fill out at least one of these fields.'
        });
        $($('input')[0]).popover('show');
        setTimeout(function () {
            $($('input')[0]).popover('hide');
        }, 4000);
    }
    finally{
        return false;
    }

您显然可以调整4秒超时以满足您的需求,或者完全替换为其他东西,但是带有try-catch和popover的解决方法部分对我来说似乎很好。

10-06 16:18