在php中加载页面时,select选项清除

时间:2010-02-19 09:54:46

标签: php javascript html ajax select

场景是这样的:见下面的选择

<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&限值为5

(这将导致category.php页面被点击并且显示的产品数量限制为用户选择的值)

2.)一旦命中了url,它就会重新加载,但是我 DONT 希望所选的值重置为默认值(它当前的状态)。我想让它反映页面重新加载后的用户选择。

3。)此外,当我移动到下一页(分页)时,我希望将状态带到下一页(即记住用户选择)。

4 个答案:

答案 0 :(得分:8)

只需使用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>

答案 1 :(得分:0)

<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,因为我不知道你的表单的方法。相应地使用。

答案 2 :(得分:0)

Tatu Ulmanen的回答处理显示选择的部分。要执行分页部分,只需将限制作为查询字符串中的参数传递。

例如,如果您当前使用的页面链接如下所示:

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

更改它们以包含您的限制参数,以便它被传递:

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

只需确保更改您的分页代码,以解释每个页面只是“限制”项目的事实。为了帮助你做到这一点,我需要知道你是如何做你的分页。

答案 3 :(得分:0)

你能检查它是否有效吗?

<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>