在这种情况下使用jquery获取原始URL

时间:2013-01-01 09:14:51

标签: jquery

在下面的表单中,我更改了操作属性并提交了表单。这很好。接下来是:如果当前位置为http://localhost/search/?mod=all且搜索字词为14,则操作将更改为http://localhost/search/?mod=all&handle=14,浏览器中的网址也将更改为http://localhost/search/?mod=all&handle=14

但是下次我尝试搜索时,由于网址现在是http://localhost/search/?mod=all&handle=14&handle=15,我得到http://localhost/search/?mod=all。每个搜索词都会继续不断。

任何想法如何通过这一切保留原始网址<form method="GET" class="modForm" action=""> <input type="text" placeholder="Search" class="modSearchValue"> <input type="radio" name="text" value="text" class="text" title="Search"> </form>

以下是表格:

$('.modForm').submit(function(event) {

        var $this = $(this);

        var query = $this.find('.modSearchValue').val(); // Use val() instead of attr('value').
        var locale = window.location;
         if($('.text').is(':checked')){query = '&text='+query;}else{query = '&handle='+query;}
        route = locale+query;
        console.log(route);

        if (query.length >= 1) {
        // Use URI encoding
        var newAction = (route);
        console.log(newAction); // DEBUG
        // Change action attribute
        $this.attr('action', newAction);
        //event.preventDefault();
        } else {
        console.log('Invalid search terms'); // DEBUG
        // Do not submit the form
        event.preventDefault();
        }
    });

这是jquery:

{{1}}

4 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。我宁愿不搞乱window.location并做一些更简单的事情:

<form method="GET" class="modForm" action="">
    <input type="hidden" name="mod" value="all"> <!-- mod is a hidden variable -->
    <input type="text" id="modSearchValue">      <!-- name not defined yet -->
    <input type="checkbox" id="textOrHandle">    <!-- name not required -->
</form>
$(".modForm").submit(function() {
    $("#modSearchValue").attr("name", $("#textOrHandle").is(":checked") ? "text" : "handle");
    // let the form submit!
});

答案 1 :(得分:0)

您有多种方法可以做到这一点。为什么不能将原始URL存储在全局变量中(保存在函数之外,如表单提交等)。

如果你不想要,你可以使用window.location.hash,它将返回你发送的所有GET参数。使用拆分,您将能够获得所需的精确参数。如果您仍需要帮助,我会发布代码。

答案 2 :(得分:0)

最快的解决方案:如果对于此代码,window.location应始终为http://localhost/search/?mod=all,那么您甚至不需要说var locale = window.location。只需说出var locale = "http://localhost/search/?mod=all"即可避免此问题。

答案 3 :(得分:0)

​var s = window.location.hostname; // gets the hostname
var d = window.location.protocol; // gets the protocol
var g = window.location.search; // gets all the params
var x = g.split("&"); // split each parameter
var url = d+"//"+s+x[0]; // makes url you want
alert(url);​​​​ // just for chill