如何创建具有子选择项的HTML表单选择器

huangapple go评论65阅读模式
英文:

How do I create a HTML form select with sub select

问题

我需要在表单上创建一些子选择。因此,当您悬停/单击选项时,会出现一个子集,例如。

Lorry|
Car|Saloon
   |Coupe
   |Estate
Van|

我知道我们可以创建一个下拉菜单,但我不知道如何将选择包含在表单提交中。
我不熟悉jQuery,但精通JavaScript和PHP。

如果使用无序列表以及一些CSS和JavaScript,我可以获得想要的效果,但不知道如何记录所选的值,而不使用

  • Lorry
  • Car
  •     <li ><a href="" >Van</a>
            <ul>
                <li><a href="#">Basic</a>    </li>
                <li><a href="#">Luton</a> <ul>
                        <li><a href="#">Low Loader</a> </li>
                        <li><a href="#">Tail lift</a> </li>
                    </ul>
                </li>
                <li><a href="#">Transit</a>    </li>
            </ul>
        </li>
    </ul>
    <input type="text" name="Vehicle" id="Vehicle" hidden>
    
    英文:

    I have a need to create some sub selects on a form. So when you hover/click on the option a subset appears eg.

    Lorry|
    Car|Saloon
       |Coupe
       |Estate
    Van|
    

    I know we can create a menu dropdown but I don't know how the selection could be included in the form POST
    I am not familiar with jQuery but proficient with JavaScript and PHP

    If used unordered list with some css and java script I can get the effect I want but don't know how to record the value select with out using <a href="">

        &lt;form method=&quot;POST&quot; action=&quot;#&quot;&gt; &lt;ul&gt;
        &lt;li &gt;&lt;a href=&quot;#&quot; &gt;Lorry&lt;/a&gt; &lt;/li&gt;
        &lt;li &gt;&lt;a href=&quot;#&quot; &gt;Car&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Saloon&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Coupe&lt;/a&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Estate&lt;/a&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
    
        &lt;li &gt;&lt;a href=&quot;&quot; &gt;Van&lt;/a&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Basic&lt;/a&gt;    &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Luton&lt;/a&gt; &lt;ul&gt;
                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Low Loader&lt;/a&gt; &lt;/li&gt;
                        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Tail lift&lt;/a&gt; &lt;/li&gt;
                    &lt;/ul&gt;
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Transit&lt;/a&gt;    &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
            &lt;input type=&quot;text&quot; name=&quot;Vehicle&quot; id=&quot;Vehicle&quot; hidden&gt;
    

    </form>

    答案1

    得分: 2

    以下是代码的中文翻译:

    类似这样的方式可以节省一些空间,然后您可以将类别值添加到选项中以指示类别。
    
    <div class="custom-select" style="width:200px;">
        <form action="#">
            <select>
                <option value="0">选择汽车:</option>
                <optgroup label="汽车" data-max-options="2">
                    <option value="1">轿车</option>
                    <option value="2">轿跑车</option>
                    <option value="3">旅行车</option>
                </optgroup>
                <optgroup label="货车" data-max-options="2">
                    <option value="6">Astrovan</option>
                    <option value="7">Windstar</option>
                    <option value="8">Pacifica</option>
                </optgroup>
            </select>
        </form>
    </div>
    

    您可以在此链接查看原始代码:https://jsfiddle.net/jasonbruce/L6nc9rwh/1/

    英文:

    Something like this could save some space, then you could add the category values to your options to indicate the category.

    &lt;div class=&quot;custom-select&quot; style=&quot;width:200px;&quot;&gt;
     &lt;form action=&quot;#&quot;&gt;
      &lt;select&gt;
       &lt;option value=&quot;0&quot;&gt;Select car:&lt;/option&gt;
       &lt;optgroup label=&quot;Car&quot; data-max-options=&quot;2&quot;&gt;
       &lt;option value=&quot;1&quot;&gt;Saloon&lt;/option&gt;
       &lt;option value=&quot;2&quot;&gt;Coupe&lt;/option&gt;
       &lt;option value=&quot;3&quot;&gt;Estate&lt;/option&gt;
       &lt;optgroup label=&quot;Van&quot; data-max-options=&quot;2&quot;&gt;
       &lt;option value=&quot;6&quot;&gt;Astrovan&lt;/option&gt;
       &lt;option value=&quot;7&quot;&gt;Windstar&lt;/option&gt;
       &lt;option value=&quot;8&quot;&gt;Pacifica&lt;/option&gt;
      &lt;/select&gt;
     &lt;/form&gt;
    &lt;/div&gt;
    

    https://jsfiddle.net/jasonbruce/L6nc9rwh/1/

    答案2

    得分: 1

    一个你可以做的事情是创建另一个选择器(在第一个选择器之外),并让它根据第一个选择器的值动态调整。你可以通过在第一个选择器上添加事件监听器来实现这一点:

    const vehicleTypeSelector = document.getElementById('vehicleTypeSelector');
    vehicleTypeSelector.addEventListener('change', (event) => updateValuesOtherSelector());
    

    这是一种你可以解决这个问题的方法。我不知道是否可以在原始的HTML中实现这一点。

    英文:

    One thing you can do is make another select (outside of the first one) and let it dynamically adjust to the value of the first select. You can do this by adding on eventlistener to the first select:

    const vechicleTypeSelector = document.getElementById(&#39;vechicleTypeSelector&#39;)
    vechicleTypeSelector.addEventListener(&#39;change&#39;, (event) =&gt; updateValuesOtherSelector())
    

    This is one way you can solve it. I don't know if it is possible in raw HTML.

huangapple
  • 本文由 发表于 2023年3月3日 20:23:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/75627030.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定