смена параметра в URL и обновление

 
0
 
JavaScript
ava
admin82 | 14.08.2007, 22:32
Добрый вечер всем! Заканчиваю таск, и напоследок понадобился js, которого совсем не знаю. Выручайте, время разбираться нет.
Задача такая:
на странице есть select (без формы, т.е. НЕ в тегах <form></form>, если это важно):

<select name = "viewBy" style="width: 60px;" onChange="viewBy()"><option>day</option><option>week</option><option>month</option></select>

Надо при выборе какого-либо пункта в url, который имеет вид
http:blablabla.jspa?fromDate=1%2F%D0%B0%D0%B2%D0%B3%2F07&toDate=31%2F%D0%B0%D0%B2%D0%B3%2F07&user=&group=administrators&account=&issuePriority=&issueType=&showDetails=false&viewBy=week&viewAll=true&startViewDate=&finishViewDate=&selectedProjectId=10000&reportKey=com.rencap.jira.report.time-sheet%3Atime-sheet-report&%D0%94%D0%B0%D0%BB%D0%B5%D0%B5=%D0%94%D0%B0%D0%BB%D0%B5%D0%B5#
заменить параметр "viewBy" на новый и перейти по новому урлу.

И вторая задача. На этой же странице есть ссылка. Мне по ее нажатии надо, чтобы выполнялась некая функция func(date) (date мне известна), и в этой функции параметр урла "startViewDate" менялся на date и осуществлялся переход на новый урл.

КАК? Ребята, выручайте, времени учить нет.

Comments (3)
ava
Exception | 14.08.2007, 22:01 #
1)
<select name="viewBy" onchange="viewBy (this.options [this.selectedIndex].value)">
<option>day</option>
<option>week</option>
<option>month</option>
</select>

function viewBy (period) {
window.location.href.replace (/viewBy=[^&]*/, "viewBy=" + period);
}


added later:
2)
<a href="#" onclick="relocate ()">
function relocate () {
var myDate = ...;
window.location.href.replace (/startViewDate=[^&]*/, "startViewDate=" + myDate);
}
ava
admin82 | 14.08.2007, 22:26 #
Супер! Быстро и четко.
Вот это

[^&]*/

мне совсем не понятно, но оно и неудивительно. Жаль, попробовать только завтра смогу.
ava
Exception | 15.08.2007, 12:59 #
Мы заменяем в адресной строке регулярное выражение /viewBy=[^&]*/ на, например, viewBy=day или viewBy=month. Эта регулярка обозначает кусок урла от viewBy= до ближайшего амперсанда.
Кстати, я кое-что забыл. Сначала нужно проверять, есть ли вообще в строке данная последовательность.
var query = window.location.search; // "?param1=val1&param2=val2"
if (query.indexOf ("viewBy=") == -1) // нет в строке такого
query += ("&viewBy=" + period);
else
query.replace (/viewBy=[^&]*/, "viewBy=" + period);
window.location.search = query;
Аналогично следует модифицировать и вторую функцию.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit