如何检查 url 是不是在 jQuery 中没有查询字符串?

Posted

技术标签:

【中文标题】如何检查 url 是不是在 jQuery 中没有查询字符串?【英文标题】:How to check if url has no query string in jQuery?如何检查 url 是否在 jQuery 中没有查询字符串? 【发布时间】:2016-11-20 18:49:36 【问题描述】:

我正在 WordPress 中编辑表单。我希望我的 jquery 脚本在 url 没有查询字符串时执行。

网址不应该有这样的查询字符串:http://127.0.0.1/mybetabizopi/login/?action=lostpassword

我只希望我的脚本在 url 像这样或没有查询字符串时运行: http://127.0.0.1/mybetabizopi/login/

这是我当前的脚本:

var j = jQuery.noConflict();
j(function() 


    j('#login #user_login').attr('placeholder', 'Username');
    j('#login #user_pass').attr('placeholder', 'Password');

    j('#login #user_login').addClass('form-control');
    j('#login #user_pass').addClass('form-control');

    j('#login #loginform label').wrap( "<div class='input-group'></div>" );


    j('#login .form-control').each(function() 
        j(this).insertAfter(j(this).parent());
    );

    j('#loginform .input-group > label').remove();

    j('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></span>').insertBefore('#user_login');

    j('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></span>').insertBefore('#user_pass');


);

感谢任何帮助。

【问题讨论】:

请检查这个答案(由 Felix Kling 提供):***.com/a/5817566/4287861 这篇博文可能有用:jquery-howto.blogspot.co.uk/2009/09/… @RanHassid 用于获取没有查询字符串的 URL,不检查是否有查询字符串 【参考方案1】:

您可以在window.location.href 上使用indexOf 来检查是否有? 字符。

请注意,您可以根据需要命名提供给 document.ready 处理程序的 jQuery 实例,因此您仍然可以在该函数范围内使用 $ 变量,即使全局 $ 不再指向 jQuery。此外,您可以通过缓存和重用选择器来提高 jQuery 代码的效率。试试这个:

jQuery(function($) 
  if (window.location.href.indexOf('?') == -1)  // no querystring exists
    $('#login #user_login').attr('placeholder', 'Username').addClass('form-control');
    $('#login #user_pass').attr('placeholder', 'Password').addClass('form-control');

    $('#login #loginform label').wrap("<div class='input-group'></div>");

    $('#login .form-control').each(function() 
      $(this).insertAfter($(this).parent());
    );

    $('#loginform .input-group > label').remove();

    $('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></span>').insertBefore('#user_login');
    $('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></span>').insertBefore('#user_pass');
  
);

【讨论】:

【参考方案2】:

您可以使用位置对象的搜索属性来做到这一点。

var querystring=window.location.search;
alert(querystring);

它会返回URL的查询字符串,用它来检查URL是否有查询字符串,只有当它为空时才执行jQuery代码。

这样,

if(querystring=="") 
    // Execute jQuery code.

【讨论】:

您应该是一名高级开发人员。谢谢楼主【参考方案3】:

你可以简单地使用 javascripts location.search 来达到这个目的:

        <script type="text/javascript">
            var j = jQuery.noConflict();
            j(function() 

                var hasQuery    = (location.search && location.search != undefined)?true : false;
                if(!hasQuery)

                    j('#login #user_login').attr('placeholder', 'Username');
                    j('#login #user_pass').attr('placeholder', 'Password');                 
                    j('#login #user_login').addClass('form-control');
                    j('#login #user_pass').addClass('form-control');                    
                    j('#login #loginform label').wrap( "<div class='input-group'></div>" );


                    j('#login .form-control').each(function() 
                        j(this).insertAfter(j(this).parent());
                    );

                    j('#loginform .input-group > label').remove();

                    j('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></span>').insertBefore('#user_login');

                    j('<span class="input-group-addon" id="basic-addon1"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></span>').insertBefore('#user_pass');                 
                               
            );
        </script>

【讨论】:

非常感谢您是一位大师【参考方案4】:

你好用下面的函数来检查查询字符串是否存在

function checkQueryStringExists()

    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    if(hashes.length>0)
        return true;
    else 
    return false;

【讨论】:

以上是关于如何检查 url 是不是在 jQuery 中没有查询字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查url查询字符串是不是等于javascript(或jquery)[重复]

如何在 Qt5 中检查 url 是不是可用?

Laravel:如何通过 jQuery 检查用户是不是登录

jquery检查页面URL是不是包含特定路径

修改给定的 jquery 验证器方法以检查字符串是不是不包含 URL

检查是不是使用 jQuery 选择了选项,如果没有选择默认值