0

我有一个这样的网址:

http://www.example.com/index.php?mod=7&sec=franquicias&month=10&year=2013

里面有一个日期选择器;这应该改变获取参数的月份和年份;然后重新加载页面。

在 HTML 中,我在负责减少日期的按钮中执行以下操作:

<button type="button" class="btnIcon previous lbutton" onclick="changeMonth('previous',{$smarty.get.month},{$smarty.get.year})">

必须管理的 javascript 函数是:

    function changeMonth(changeType, month, year){
    changeMonth;

    switch (changeType){
    case "previous":
        changeMonth = month-1;
        if (changeMonth <= 0) changeMonth = 12;
        if (changeMonth < 10) changeMonth = "0"+changeMonth;
        window.location = updateURLParameter($(location).attr('href'), month, changeMonth);
        break;
    case "next":
        break;
    }       
}

function updateURLParameter(url, param, paramVal){

    var regEx = /month=[0-9]{3}/;
    console.log("paramVal: "+paramVal);
            // paramVal here is ever correct.
    var newUrl = url.replace(regEx, 'month='+paramVal);

    console.log(newUrl);
    return newUrl;
}

看来它应该可以工作,现在奇怪的是,只有当 url 中的 GET 参数为 &month=03 时才有效,当还有其他月份时,url.replace 不能正确替换 url。重要的是要注意函数“updateUrlParameter”中的“paramVal”总是正确的;所以问题出在'function updateUrlParameter'的urlReplace中。

我很感激任何帮助。

4

1 回答 1

1

我看不出它是如何工作的month=03[0-9]{3}完全匹配 3 位数字,03但不匹配。正确的正则表达式是:

/\bmonth=\d{2}\b/
于 2013-05-07T11:57:06.077 回答