опция выбора очищается при загрузке страницы в php - PullRequest
2 голосов
/ 19 февраля 2010

Сценарий таков: см. Выберите ниже

<form name="limit">
    <select name="limiter" onChange="limit(this.value)">
        <option selected="selected">&nbsp;</option>
        <option value="5">5</option>
        <option value="10">10</option>
        <option value="15">15</option>
    </select>
</form>

Я хочу, чтобы когда-либо был выбран какой-либо параметр для 3-х событий:

1.) Вызывается функция js limit (), котораявсе, что он делает, принимает текущий URL, добавляет новый параметр запроса 'limit' с выбранным пользователем значением, например:

http://localhost/blahblah/apps/category.php?pg=1&catId=3021&limit=5

(это приведет к попаданию на страницу category.php иКоличество отображаемых товаров ограничено значением, выбранным пользователем)

2.) После того, как URL-адрес будет достигнут, он перезагрузится, но я DONT хочу, чтобы выбранное значение вернулось к значению по умолчанию (это в настоящее время делает).Я хочу, чтобы он отражал выбор пользователей после перезагрузки страницы.

3.) Кроме того, когда я перехожу на следующую страницу (разбиение на страницы), я бы хотел, чтобы состояние переносилось на следующую страницу (т.е.запоминание выбора пользователя).

Ответы [ 4 ]

8 голосов
/ 19 февраля 2010

Просто назначьте выбранное значение с помощью PHP:

<form name="limit">
    <select name="limiter" onChange="limit()">
        <option <?php if(!isset($_POST['limiter'])) echo ' selected="selected"'; ?>>&nbsp;</option>
        <option <?php if(isset($_POST['limiter']) && $_POST['limiter'] == 5) echo ' selected="selected"'; ?> value="5">5</option>
        <option <?php if(isset($_POST['limiter']) && $_POST['limiter'] == 10) echo ' selected="selected"'; ?> value="10">10</option>
        <option <?php if(isset($_POST['limiter']) && $_POST['limiter'] == 15) echo ' selected="selected"'; ?> value="15">15</option>
    </select>
</form>

Поскольку код становится трудным для чтения, вы можете вместо этого сделать цикл с PHP:

<form name="limit">
    <select name="limiter" onChange="limit()">
        <option <?php if(!isset($_POST['limiter'])) echo ' selected="selected"'; ?>>&nbsp;</option>
        <?php foreach(array(5, 10, 15) as $p): ?>
        <option <?php if(isset($_POST['limiter']) && $_POST['limiter'] == $p) echo ' selected="selected"'; ?> value="<?php echo $p; ?>">
            <?php echo $p; ?>
        </option>
        <?php endforeach; ?>
    </select>
</form>
0 голосов
/ 17 марта 2010

можешь проверить, работает ли он?

<script type="text/javascript">
function limit(myvalue)
{
location.href="http://yoursite?limit="+myvalue;
}

function querySt() {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == 'limit') {
for (var idx=0;idx<document.getElementById('limiter').options.length;idx++) {
            if (document.getElementById('limiter').value==ft[1]) {
                  document.getElementById('limiter').selectedIndex=idx;


                  }

                  }
}
}

}

   </script>

 </head>
 <body onload="querySt()">
 <form name="limits"> 
    <select onchange="limit(this.value)" id="limiter"> 
        <option selected="selected">&nbsp;</option> 
        <option value="5">5</option> 
        <option value="10">10</option> 
        <option value="15">15</option> 
    </select> 
</form> 

 </body>
0 голосов
/ 17 марта 2010

Ответ Тату Ульманена обрабатывает часть отображения выбора. Чтобы выполнить разбиение на страницы, просто передайте лимит в качестве параметра в строке запроса.

Например, если вы используете ссылки на страницы, которые выглядят следующим образом:

<a href="http://localhost/blahblah/apps/category.php?pg=1&catId=3021">1</a>

Измените их, чтобы включить ваш параметр limit, чтобы он передавался:

<a href="http://localhost/blahblah/apps/category.php?pg=1&catId-3021&limit=5">1</a>

Просто убедитесь, что изменили свой код нумерации страниц, чтобы учесть тот факт, что каждая страница содержит только «ограниченные» элементы. Чтобы помочь вам сделать это, мне нужно знать, как вы делали свою нумерацию страниц.

0 голосов
/ 19 февраля 2010
<script type="text/javascript">
    function limit(value)
    {
        url = "localhost/yourapp?limiter="+value;
    }
</script>

<form name="limit">
    <select name="limiter" onChange="limit(this.value)">
        <option>&nbsp;</option>
        <option value="5" <?php if($_REQUEST['limiter'] == 5) {echo "selected";}?>>5</option>
        <option value="10" <?php if($_REQUEST['limiter'] == 10) {echo "selected";}?>>10</option>
        <option value="15" <?php if($_REQUEST['limiter'] == 15) {echo "selected";}?>>15</option>
    </select>
</form>

Я использую $_REQUEST здесь, потому что я не знаю метод вашей формы. Используйте соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...