选择Box时返回原始状态?

时间:2015-04-05 12:23:08

标签: php html

在下面的表格中,我在选择框中添加了附加到网址的选项。但是我想将此更改为提交按钮,因为用户将输入用户名并选择下拉值。

        <section id="search">
            <form method="get" action="index.php" id="main-form">

                <div class="summoner_search">
                    <input id="summoner" name="summoner" type="text" placeholder="Summoner"/>
                    <input id="region" name="region" type="hidden" value="<?php echo $region ?>"/>
                    <input id="form" name="form" type="hidden" value="true"/>

                    <select id="regions" onchange="location = this.options[this.selectedIndex].value;">
                      <option value="index.php?region=br">BR</option>
                      <option value="index.php?region=eune">EUNE</option>
                      <option value="index.php?region=euw">EUW</option>
                      <option value="index.php?region=kr">KR</option>
                      <option value="index.php?region=lan">LAN</option>
                      <option value="index.php?region=las">LAS</option>
                      <option value="index.php?region=na">NA</option>
                      <option value="index.php?region=oce">OCE</option>
                      <option value="index.php?region=ru">RU</option>
                      <option value="index.php?region=tr">TR</option>
                    </select>

                    <input type="submit" value="Submit" style="display:none;"/>        
                </div>
                <a href="index.php" alt="reset">Reset Values</a>
            </form>
        </section>

目前,下拉列表会刷新页面,并且必须重新输入召唤者名称。如果我可以将它放在提交按钮,那么值将在提交后追加我认为它应该更好,但我不知道该怎么做。

我的另一个问题是,有人可以指出我正确的方向根据所在的国家/地区自动加载下拉值吗?

由于 亚历

1 个答案:

答案 0 :(得分:0)

如果你想避免在select fires的onchange事件之后再次输入召唤者值,那么你可以将召唤者输入的值附加到该onchange事件中调用的URL,类似于以下代码:

<section id="search">
    <form method="get" action="index.php" id="main-form">
        <div class="summoner_search">
            <input id="summoner" name="summoner" type="text" 
                   placeholder="Summoner"
                   value="<?php echo htmlentities($_GET['summoner'], ENT_QUOTES); ?>"
                   />
            <input id="region" name="region" type="hidden"
                   value="<?php echo htmlentities($region, ENT_QUOTES); ?>"
                   />
            <input id="form" name="form" type="hidden" value="true"/>

            <script>
                function load(select) {
                    var summoner = document.getElementById('summoner');
                    var url = select.options[select.selectedIndex].value;
                    if (summoner.value) {
                        url += '&' + encodeURIComponent(summoner.value);
                    }
                    window.location.href = url;
                }
            </script>
            <select id="regions" onchange="load(this);">
                <option value="index.php?region=br">BR</option>
                <option value="index.php?region=eune">EUNE</option>
                <option value="index.php?region=euw">EUW</option>
                <option value="index.php?region=kr">KR</option>
                <option value="index.php?region=lan">LAN</option>
                <option value="index.php?region=las">LAS</option>
                <option value="index.php?region=na">NA</option>
                <option value="index.php?region=oce">OCE</option>
                <option value="index.php?region=ru">RU</option>
                <option value="index.php?region=tr">TR</option>
            </select>

            <input type="submit" value="Submit" style="display:none;"/>

        <a href="index.php" alt="reset">Reset Values</a>
        </div>
    </form>
</section>
  

如果我可以将它放在提交按钮上,那么值将在提交后追加我认为它应该更好但我不知道该怎么做。

您是说要在单击提交按钮时同时发送召唤者参数(您的召唤者输入值)和区域参数(您的区域选择值)? 然后您只需将您的选择更改为:

<select name="region">
    <option value="br">BR</option>
    <option value="eune">EUNE</option>
    ....
</select>

然后你的index.php会在发送表格时收到召唤者和区域值。

  

我的另一个问题是,有人可以指出我正确的方向根据所在的国家/地区自动加载下拉值吗?

你需要一个地理定位库。使用它来从他或她的IP地址检测访问者的区域。然后从您的可用区域集中选择最接近访问者区域的区域,并将选择中的相关选项标记为selected