Javascript jQuery代码与提交按钮冲突

Javascript jQuery代码与提交按钮冲突,javascript,jquery,Javascript,Jquery,我的网站上有以下代码: $('input[type="submit"], a').not('[target=_blank]').click(function(){ var bad = this.href.lastIndexOf('#') >= 0 || this.href.indexOf('javascript') >= 0; if(!bad) { $(".load-overlay").show();

我的网站上有以下代码:

    $('input[type="submit"], a').not('[target=_blank]').click(function(){
        var bad = this.href.lastIndexOf('#') >= 0 || this.href.indexOf('javascript') >= 0;
        if(!bad) {
            $(".load-overlay").show();
            return true;
        }
        return true;
    });
这是为了在有效链接上显示加载屏幕;有效链接是href中没有javascript的链接,或href中带有#的链接。有效链接也没有target=\u空属性

它正在做它的工作,但它与按钮冲突


加载屏幕(
.load overlay
)不会显示在提交按钮上,但它是在代码中定义的。这是怎么回事?控制台中没有错误。

这是因为输入没有href属性。因此,当单击submit按钮时,将引发TypeError异常。在使用它之前,您必须检查this.href是否存在

改变

var bad = this.href.lastIndexOf('#') >= 0 || this.href.indexOf('javascript') >= 0;

编辑

这解决了单击提交按钮时加载屏幕不显示的问题,但对于将来的更改,最好知道This.href可能返回与您预期不同的值

this.href
返回链接指向的完整解析url。如果您有一个带有相对url的链接,则此值与HTML中的“href”-属性不同。要获得HTML属性的确切值,请使用jQuery函数.attr或JavaScript函数getAttribute

示例:

在本例中,
this.href
http://yourdomain.com/home
,但是
这个.getAttribute(“href”)
/home


对于您当前的实现,这是不相关的。但是,您可能希望将来检查href属性是否以#开头,或者在#之前是否有指向其他站点的url。

您是否尝试过console.logging,bad,以及this.href.lastIndexOf('.#')和this.href.indexOf('javascript')>=0的值?@wateriswet是,但似乎无法解决问题。坏的总是被评估为错误?这不是正确的答案,我明白了,J.Doe,给我一分钟。
var bad = typeof this.href !== "undefined" && (this.href.lastIndexOf('#') >= 0 || this.href.indexOf('javascript') >= 0);