HTML <select>条件标记

时间:2018-03-19 17:52:37

标签: javascript html

我有一个简单的表单,允许用户添加客户端及其位置(国家,州和城市)。代码中似乎存在一个问题,导致下拉表单字段在切换国家时保留在原位。例如,如果用户选择中国,然后选择任何省,然后选择任何城市,然后切换国家,则城市的下拉仍然存在。这可以在代码片段中看到。 &#13; &#13; function displayCountry(answer){&#13;   document.getElementById(answer).style.display =&#34; block&#34 ;;&#13;   if(answer ==&#34; China&#34;){&#13;     document.getElementById(&#34; India&#34;)。style.display =&#34; none&#34 ;;&#13;     document.getElementById(&#34; USA&#34;)。style.display =&#34; none&#34 ;;&#13;   如果(回答==&#34;印度&#34;){&#13;     document.getElementById(&#34; China&#34;)。style.display =&#34; none&#34 ;;&#13;     document.getElementById(&#34; USA&#34;)。style.display =&#34; none&#34 ;;&#13;   如果(answer ==&#34; USA&#34;){&#13;     document.getElementById(&#34; China&#34;)。style.display =&#34; none&#34 ;;&#13;     document.getElementById(&#34; India&#34;)。style.display =&#34; none&#34 ;;&#13;   }&#13; }&#13; &#13; function displayProvince(answer){&#13;   document.getElementById(answer).style.display =&#34; block&#34 ;;&#13;   if(answer ==&#34; Beijing Municipality&#34;){&#13;     document.getElementById(&#34; Tianjin Municipality&#34;)。style.display =&#34; none&#34 ;;&#13;   如果(回答==&#34;天津市&#34;){&#13;     document.getElementById(&#34; Beijing Municipality&#34;)。style.display =&#34; none&#34 ;;&#13;   }&#13; }&#13; &#13; 功能displayChinaCity(回答){&#13;   document.getElementById(answer).style.display =&#34; block&#34 ;;&#13;   if(answer ==&#34; Beijing&#34;){&#13;     document.getElementById(&#34; Dongcheng&#34;)。style.display =&#34; none&#34 ;;&#13;   } else if(answer ==&#34; Dongcheng&#34;){&#13;     document.getElementById(&#34; Beijing&#34;)。style.display =&#34; none&#34 ;;&#13;   }&#13; }&#13; &lt; div class =&#34; container&#34;&gt;&#13;   &lt; h3&gt;添加客户端&lt; / h3&gt;&#13;   &lt; div class =&#34; tab-content&#34;&gt;&#13;     &lt; form action =&#34; / add / clients&#34;方法=&#34;后&#34;&GT;&#13; &#13;       &lt; div class =&#34; top-row&#34;&gt;&#13;         &lt; div class =&#34; field-wrap&#34;&gt;&#13;           &lt; label&gt;客户ID&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&lt; input&gt;&lt; / label&gt;&#13;         &LT; / DIV&GT;&#13;       &LT; / DIV&GT;&#13; &#13;       &lt; div class =&#34; top-row&#34;&gt;&#13;         &lt; div class =&#34; field-wrap&#34;&gt;&#13;           &lt; label&gt;客户名称&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&lt; input&gt;&lt; / label&gt;&#13;         &LT; / DIV&GT;&#13;       &LT; / DIV&GT;&#13; &#13;       &lt; div class =&#34; field-wrap&#34;&gt;&#13;         &lt; label&gt;客户类型&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&lt; select&gt;&lt; / select&gt;&lt; / label&gt;&#13;       &LT; / DIV&GT;&#13; &#13; &#13;       &lt; div class =&#34; field-wrap&#34;&gt;&#13;       &#13;         &lt; label&gt;客户来源&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&#13;           &lt; select name =&#34; country&#34;平变化=&#34; displayCountry(THIS.VALUE)&#34;&GT;&#13;             &lt;选择选项=&#34; - &#34;&gt; - &lt; /选项&gt;&#13;             &lt; option value =&#34; China&#34; &GT;中国&LT; /选项&GT;&#13;             &lt; option value =&#34; India&#34; &GT;印度&LT; /选项&GT;&#13;             &lt; option value =&#34; USA&#34; &GT;美国&LT; /选项&GT;&#13;           &LT; /选择&GT;&#13;         &LT; /标签&gt;&#13; &#13;         &lt; div id =&#34; USA&#34;风格=&#34;显示:无;&#34;&GT;&#13;           &LT;选择&GT;&LT; /选择&GT;&#13;         &LT; / DIV&GT;&#13; &#13;         &lt; div id =&#34; China&#34;风格=&#34;显示:无;&#34;&GT;&LT峰; br /&GT;&#13;           选择省&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&#13;           &lt; select name =&#34; province&#34;平变化=&#34; displayProvince(THIS.VALUE)&#34;&GT;&#13;             &lt;选择选项=&#34; - &#34;&gt; - &lt; /选项&gt;&#13;             &lt; option value =&#34;北京市&#34; &gt;北京市&lt; / option&gt;&#13;             &lt; option value =&#34; Tianjin Tianjin&#34;&gt; Tianjin Municipality&lt; / option&gt;&#13;           &LT; /选择&GT;&#13;         &LT; / DIV&GT;&#13;         &#13;         &lt; div id =&#34; India&#34;风格=&#34;显示:无;&#34;&GT;&#13;           &LT;选择&GT;&LT; /选择&GT;&#13;         &LT; / DIV&GT;&#13; &#13;         &lt; div id =&#34;北京市&#34;风格=&#34;显示:无;&#34;&GT;&LT峰; br /&GT;&#13;           选择城市&lt; span class =&#34; req&#34;&gt; *&lt; / span&gt;&#13;           &lt; select name =&#34; city&#34;平变化=&#34; displayChinaCity(THIS.VALUE)&#34;&GT;&#13;             &lt;选择选项=&#34; - &#34;&gt; - &lt; /选项&gt;&#13;             &lt; option value =&#34; Beijing&#34;&gt; Beijing&lt; / option&gt;&#13;             &lt; option value =&#34; Dongcheng&#34;&gt; Dongcheng&lt; / option&gt;&#13;           &LT; /选择&GT;&#13;         &LT; / DIV&GT;&#13; &#13;       &LT; / DIV&GT;&#13;     &LT; /形式&GT;&#13;   &LT; / DIV&GT;&#13; &LT; / DIV&GT;&#13; &#13; &#13;

1 个答案:

答案 0 :(得分:0)

这是解决问题的另一种方法。我不是手动创建HTML中的所有buildForms标记,而是使用函数buildSelect创建它们,并使用数据结构将所有国家/州/城市保留在一个位置。我使用select函数生成所有updateStates标记以及函数updateCitiesvar data = { countries: [{ name: 'China', childs: [{ name: 'Beijing', childs: [{name: 'Beijing'}, {name: 'Dongcheng'}] }, { name: 'Tianjin', childs: [{name: 'Guangzhou'}, {name: 'Shanghai'}] }] }, { name: 'India', childs: [{ name: 'Uttar', childs: [{name: 'Kanpur'}, {name: 'Ghaziabad'}] }, { name: 'Maharashtra', childs: [{name: 'Mumbai'}, {name: 'Pune'}] }] }, { name: 'USA', childs: [{ name: 'Washington', childs: [{name: 'Washington'}, {name: 'Seatle'}] }, { name: 'Florida', childs: [{name: 'Orlando'}, {name: 'Miamy'}] }] }] }; function buildSelect(name, data, childs) { var div = $('<div>'); div.addClass('hidden autoSelect ' + data.name + ' ' + name); var label = $('<label>'); label.text(name); var select = $('<select>'); var option = $('<option>'); option.text('--'); select.append(option); data.childs.forEach(function (child) { option = $('<option>'); option.val(child.name); option.text(child.name); select.append(option); }); if (childs) select.on('change', updateCities); label.append(select); div.append(label); $('.country').append(div); } function buildForms(data) { data.countries.forEach(function (country) { buildSelect('State', country, true); country.childs.forEach(function (state) { buildSelect('City', state); }); }); } function hideAutoSelect (name) { $('div.autoSelect.'+name).addClass('hidden'); } function updateStates() { var v = this.value; if (v) { hideAutoSelect('State'); hideAutoSelect('City'); var div = $('div.autoSelect.'+v); div.removeClass('hidden'); var select = $('select', div); if (select.val()) $('div.autoSelect.'+select.val()).removeClass('hidden'); } } function updateCities() { var v = $(this).val(); if (v) { hideAutoSelect('City'); $('div.autoSelect.'+v).removeClass('hidden'); } } $(document).on('ready',function () { buildForms(data); $('[name=country]').on('change', updateStates); });来隐藏/显示元素。

&#13;
&#13;
.hidden {display: none}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <h3>Add Client</h3>
  <div class="tab-content">
    <form action="/add/clients" method="post">

      <div class="top-row">
        <div class="field-wrap">
          <label>Client ID<span class="req">*</span>
            <input placeholder="0000000">
          </label>
        </div>
      </div>

      <div class="top-row">
        <div class="field-wrap">
          <label>Client name<span class="req">*</span>
            <input placeholder="John">
          </label>
        </div>
      </div>

      <div class="field-wrap">
        <label>Client type<span class= "req">*</span>
          <select>
            <option selected= "--">--</option>
          </select>
        </label>
      </div>


      <div class="field-wrap country">
      
        <label>Client Origin<span class="req">*</span>
          <select name="country">
            <option selected= "--">--</option>
            <option value= "China" >China</option>
            <option value= "India" >India</option>
            <option value= "USA"  >USA</option>
          </select>
        </label>

      </div>
    </form>
  </div>
</div>
&#13;
"Caused by: shaded.com.google.cloud.spanner.SpannerException: INVALID_ARGUMENT: DML statements(INSERT, UPDATE and DELETE) are not supported." 
&#13;
&#13;
&#13;

相关问题