0

我有一个表格

 <form name="categoryform" method="post">
 Category:<select name="category" id="category" >
 <option value="games">games</option>
 <option value="books">books</option>
 <option value="toys">toys</option>
 <option value="clothes">clothes</option>
 </select>

 Age: <select  multiple name="age" id="age" >
 <option value="5">5</option>
 <option value="10">10</option>
 <option value="15">15</option>
 </select>
 <input type="submit" name="submit" value="submit"/>
 </form>

最初的网址是http://localhost/childzone/

如果我books从 Category 中选择选项,则 URL 必须更改为http://localhost/childzone/books,当我选择选项时clothes,url 必须为http://localhost/childzone/clothes.

如果我还从下拉列表中选择 age=5 ,age则 url 必须是http://localhost/childzone/clothes&age=5. 对于选择的多个选项,即,如果我从 url 中选择 5 和 10,age则必须是http://localhost/childzone/clothes&age=5,10.

我如何获得这样的网址。我是php新手,谁能帮忙。先感谢您

4

5 回答 5

1

这是一个更详细的 jQuery 解决方案:

JS:

//Generate url for category
$("select[name='category']").change(function(e) {
    e.preventDefault();
    var a = "http://localhost/childzone/";
    $("div.url").append(a + this.value);
  });

  //Generate URL for the multi-select age list
  var foo = [];
  var a = "http://localhost/childzone/clothes&age=";
  var b = '';
  $("select[name='age']").change(function(e) {
    e.preventDefault();
    $("select[name='age'] :selected").each(function(i, selected) {
      foo[i] = $(selected).text();
      if (b == '') b = b + foo[i]; //if more than one option selected, seperate it by comma.
      else b = b + ',' + foo[i];
    });
    $("div.url").html(a + b); //Append URL to div for reference
    b = ''; //Clear the string holding URL.
  });

只是我们需要通过获取我附加在div.url.

完整的工作小提琴在这里

于 2014-10-09T11:20:34.687 回答
1
//on books select event use
location.replace("http://localhost/childzone/books");

//on clothes select event use
location.replace("http://localhost/childzone/clothes");

无需刷新:-

 //on books select event use
window.history.replaceState(null, "Search Results", "localhost/childzone/books")

//on books select event use
window.history.replaceState(null, "Search Results", "localhost/childzone/books")
于 2014-10-09T09:50:25.273 回答
1

这些用于重定向脚本而不刷新页面。让我知道这些是否有效,伙计

function submitnow_urlchange(){
        var cat = jQuery("#category option:selected").val();
        var age = jQuery("#age option:selected");
        var age_holder = [];
        age.each(function(){
          var el = jQuery(this);
          var hold = el.val();
          if(el.val()) age_holder.push(hold);   
        });

        var age_compile = age_holder.join(',');
        var url = cat+"&"+age_compile;
        history.pushState("", "", url);
        return false;
}
于 2014-10-09T10:35:33.200 回答
0

试试这个兄弟,在你的表单上添加 onsubmit="submitnow()" 这样这个功能就可以工作了。让我知道它是否有问题

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
function submitnow(){
        var cat = jQuery("#category option:selected").val();
        var age = jQuery("#age option:selected");
        var age_holder = [];
        age.each(function(){
          var el = jQuery(this);
          var hold = el.val();
          if(el.val()) age_holder.push(hold);   
        });

        var age_compile = age_holder.join(',');
        var url = "http://localhost/childzone/?"+cat+"&"+age_compile;
        return url;
}
</script>

<form name="categoryform" method="post" onsubmit="submitnow();">
于 2014-10-09T10:20:52.370 回答
-1

这是不可能的。因为如果您尝试更改 url,那么页面将被刷新。然后您的选择将重置。您可以通过附加 # 来做到这一点,或者您必须以某种方式维护选定的值并再次设置它们。

于 2014-10-09T09:58:12.383 回答