Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery支持";:“无效”;选择器_Javascript_Jquery_Html_Jquery Selectors - Fatal编程技术网

Javascript jQuery支持";:“无效”;选择器

Javascript jQuery支持";:“无效”;选择器,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,我收到以下控制台消息: [16:04:01.292] Error: Syntax error, unrecognized expression: unsupported pseudo: invalid @ http://localhost:8080/assets/js/jquery-1.9.1.min.js:4 当我尝试类似于: if($(e.target).is(':invalid'){…} 我该如何解决这个问题 这里有一个例子:-尝试使用@JanDvorak建议的querySelector

我收到以下控制台消息:

[16:04:01.292] Error: Syntax error, unrecognized expression: unsupported pseudo: invalid @ http://localhost:8080/assets/js/jquery-1.9.1.min.js:4
当我尝试类似于:

if($(e.target).is(':invalid'){…}

我该如何解决这个问题


这里有一个例子:-尝试使用@JanDvorak建议的
querySelectorAll
更改jQuery版本(1.9后停止工作)

(考虑到这一点,他的答案应该被接受),您可以编写自己的表达式,使
成为(':invalid')
有效吗

jQuery.extend(jQuery.expr[':'], {
    invalid : function(elem, index, match){
        var invalids = document.querySelectorAll(':invalid'),
            result = false,
            len = invalids.length;

        if (len) {
            for (var i=0; i<len; i++) {
                if (elem === invalids[i]) {
                    result = true;
                    break;
                }
            }
        }
        return result;
    }
});

:无效的
实际上不是有效的jQuery选择器(伪类)


然而,根据,它是一个有效的CSS选择器(IE中不支持),您可以使用元素的
validity
属性(请参阅)

现在结合@adeneo的想法:

jQuery.extend(jQuery.expr[':'], {
    invalid : function(elem, index, match){
        return elem.validity !== undefined && elem.validity.valid === false;
    },

    valid : function(elem, index, match){
        return elem.validity !== undefined && elem.validity.valid === true;
    }


});

jquery 1.8之后不支持自定义验证器这可能会有所帮助,因为它是CSS而不是javascript,jquery会将一些CSS伪选择器重新创建为表达式,以方便您使用。这不是这些选择器中的一个,也许您需要通过
querySelectorAll
使用它,因为它是CSS选择器,而不是jquery选择器。这是定义的ely是一个1.9版本的问题。如果你用不同的jQuery版本测试它,它将停止使用1.9。我不确定这是否明显。对不起,我花了一段时间写我的答案。你的答案更好。向上投票。不在IE
文档中工作。querySelectorAll(':invalid')
给了我“语法错误”在IE9下,即使我使用了
X-UA-Compatible IE=Edge
-有什么建议吗?IE9根本不支持HTML5表单验证,因此
:无效的
选择器不起作用->+1,我不确定是否要发布答案,因为这应该是给你的。我从未想到本机查询选择器会起作用。@adeneo是你写的fiddleYeah,但那大部分是从MDN复制/粘贴的。在这里,创意人有空间!@adeneo你还展示了如何使用自定义伪类扩展jQuery我已经证实了上述内容,但令人惊讶的是,这是有效的:
$(':invaild')
--打印所有无效元素。
if($(e.target).is(":invalid"))  //SyntaxError
if(~[].indexOf.call(document.querySelectorAll(":invalid"),e.target))
if(e.target.matches(":invalid"))
jQuery.extend(jQuery.expr[':'], {
    invalid : function(elem, index, match){
        return elem.validity !== undefined && elem.validity.valid === false;
    },

    valid : function(elem, index, match){
        return elem.validity !== undefined && elem.validity.valid === true;
    }


});