显示和值取决于具有不同值的下拉菜单的选项

时间:2017-09-15 03:36:49

标签: javascript jquery html database drop-down-menu

我想在下拉菜单中将我选择的值提交到我的数据库,但添加到数据库的值与我选择的值不同。

这是插入的记录,“kuarter”字段值为“kuching-01”:
enter image description here
但这些是我选择的选择,其中“kuarter”字段是“JALAN DURIAN BURONG STAMPIN”:

enter image description here
如何将“JALAN DURIAN BURONG STAMPIN”的值添加到数据库而不是“kuching-01”?

这是我的javascript:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {

var $options = $("#kuarter").clone(); // this will save all initial options in the second dropdown

$("#kawasan").change(function() {
var filters = [];
if ($(this).val() == "") {
  $(this).find("option").each(function(index, option) {
    if ($(option).val() != "")
      filters.push($(option).val());
  });
} else {
  filters.push($(this).val())
}
$("#kuarter").html("");

$.each(filters, function(index, value) {
  $options.find("option").each(function(optionIndex, option) { // a second loop that check if the option value starts with the filter value
    if ($(option).val().startsWith(value))
      $(option).clone().appendTo($("#kuarter"));
  });

});
});
});
</script>

这是下拉列表的HTML代码:

<tr valign="baseline">
  <td nowrap="nowrap" align="right">Kawasan:</td>
  <td><select name="pilih_kawasan" id="kawasan">
  <option value="none">SILA PILIH</option>
<option value="kuching">KUCHING</option>
<option value="lundu">LUNDU</option>
<option value="sriaman">SRI AMAN</option>
<option value="betong">BETONG</option>
</select></td>
</tr>
<tr valign="baseline">
  <td nowrap="nowrap" align="right">Kuarter:</td>
  <td><select name="pilih_kuarter" id="kuarter">
  <option value="none-01"></option>
<option value="kuching-01">JALAN DURIAN BURONG STAMPIN</option>
<option value="lundu-01">JALAN SEKETI</option>
<option value="sriaman-01">JALAN FOO CHOW</option>
<option value="sriaman-02">JALAN SABU</option>
<option value="betong-01">JALAN TANJUNG ASSAM</option>
</select></td>
</tr>

2 个答案:

答案 0 :(得分:0)

原因是您要在value中保存所选选项的#kuarter,而不是在例如kuching-01中显示的文字。您选择的选项的值为<option value="kuching-01">JALAN DURIAN BURONG STAMPIN</option>

pilih_kawasan

由于其他代码取决于值,因此您无法更改选项值以匹配所需的文本。

我们可以做的是将文本保存在将随表单提交的隐藏输入中。为此,输入必须与当前选项具有相同的名称,以便您的处理代码能够识别它。

要做到这一点,我们需要:

  1. 更改选择的名称,以便我们的新隐藏输入可以使用名称<select name="pilih_kawasan_select" id="kawasan">并汇总值以进行处理,例如: pilih_kawasan
  2. 使用名称<input type="hidden" name="pilih_kawasan" id="pilih_kawasan_value" value="">向表单添加隐藏的输入以存储文本,例如:#pilih_kawasan_value
  3. 添加javascript函数以使用所选的文本更新隐藏字段#kuarter的值(即不是)。
  4. 每次#kuarter下拉列表更改时调用此函数。这需要在2个地方完成:在#kuarter中选择新值时,以及在&#39; kawasan&#39;更改(因为这会更改$(document).ready(function() { var $options = $("#kuarter").clone(); $("#kawasan").change(function() { var filters = []; if ($(this).val() == "") { $(this).find("option").each(function(index, option) { if ($(option).val() != "") filters.push($(option).val()); }); } else { filters.push($(this).val()) } $("#kuarter").html(""); $.each(filters, function(index, value) { $options.find("option").each(function(optionIndex, option) { if ($(option).val().startsWith(value)) { $(option).clone().appendTo($("#kuarter")); // (4.) ADDED: the #kuarter values have changed, so update the hidden input to the selected text selected_text = $("#kuarter option:selected").text(); // get the text from the selected option setKuarterValue(selected_text); // call our function to update the hidden input } }); }); }); // (4.) ADDED: Update the hidden input any time the #kuarter dropdown is changed $("#kuarter").change(function() { // get the text from the selected option in #kawasan selected_text = $("#kuarter option:selected").text(); setKuarterValue(selected_text); // call our function to update the hidden input }); }); /* (3.) function to set the values of the hidden input "#pilih_kuarter" that will be submitted to your processing code. */ function setKuarterValue(myval) { // if the value hasn't changed , no need to update if ($("#pilih_kuarter").val() == myval) return; // set the value of the hidden input with the selected text $("#pilih_kuarter").val(myval); // just for testing, so we can see the value that will be submitted - delete when its working for you console.log ("Set pilih_kuarter value = "+ myval); })中的值。
  5. 工作代码段

    HTML&amp;下面的jQuery正在这里工作,运行代码片段来看看它在做什么。

    &#13;
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table>
      <tr valign="baseline">
        <td nowrap="nowrap" align="right">Kawasan:</td>
        <td>
    
          <!-- (1.) UPDATED: Change the name of the select, as we're going to submit our hidden input using this name instead -->
    
          <select name="pilih_kawasan" id="kawasan">
                    <option value="none">SILA PILIH</option>
                    <option value="kuching">KUCHING</option>
                    <option value="lundu">LUNDU</option>
                    <option value="sriaman">SRI AMAN</option>
                    <option value="betong">BETONG</option>
                </select>
        </td>
      </tr>
      <tr valign="baseline">
        <td nowrap="nowrap" align="right">Kuarter:</td>
        <td>
          <select name="pilih_kuarter_select" id="kuarter">
                    <option value="none-01"></option>
                    <option value="kuching-01">JALAN DURIAN BURONG STAMPIN</option>
                    <option value="lundu-01">JALAN SEKETI</option>
                    <option value="sriaman-01">JALAN FOO CHOW</option>
                    <option value="sriaman-02">JALAN SABU</option>
                    <option value="betong-01">JALAN TANJUNG ASSAM</option>
                </select>
        </td>
      </tr>
    
     <!-- (2.) ADDED: add a new hidden input to store the required text
          this must have the name=pilih_kuarter so it will submit the value to you database -->
      <input type="hidden" name="pilih_kuarter" id="pilih_kuarter" value="">
    
    </table>
    &#13;
    1 + 3 + 5 + ... + 2n+1 = n^2
    
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

这就是结果...... kuarter的价值应该是kawasan的价值,而kawasan的价值应该是kuarter的价值