jQuery依赖字段(重置值),添加到MySQL同名属性字段

时间:2017-03-14 19:59:08

标签: php jquery mysql forms

我已经设置了4个多个依赖的下拉字段。我想选择区域,然后是国家,拥有或特许经营,最后是商店名称。

我的问题: 1)显示/隐藏工作正常,但选择“ - ”时不重置值。这意味着我可以选择一个商店,然后改变我的意见,从上部字段类别中选择另一个选项并选择第二个商店。 POST将具有两个值。我想在选择其他选项时重置第一个值

2)商店名称具有所有名称属性store_name。当我使用implode()时,我无法在mysql db上正确记录它。

jQuery的:

$( document ).ready(function() {
    $("#region").bind("change",function(){
        var selectedValue=$(this).val().toLowerCase();
        switch(selectedValue){
            case "asia": 
                $("#country_asia").show();  
                $("#country_america").hide()
                $("#country_europe").hide()
                break;
            case "america": 
                $("#country_asia").hide();  
                $("#country_america").show();
                $("#country_europe").hide();    
                break;
            case "europe":  
                $("#country_asia").hide();  
                $("#country_america").hide();
                $("#country_europe").show();    
                break;
            case "-":   
                $("#country_asia").hide()   
                $("#country_america").hide()
                $("#country_europe").hide()
                break;
                        }
    });
    $("#country_europe_dd").change(function()
{
  var selectedValue=$(this).val().toLowerCase();
  if(selectedValue == "greece")
  {
    $("#owned_gr").show();
  }
  else if(selectedValue == "-")
  {
    $("#owned_gr").hide();
  }
})
    $("#owned_gr_dd").change(function()
{
  var selectedValue=$(this).val().toLowerCase();
  if(selectedValue == "own")
  {
    $("#store_name").show();
    $("#store_name_greece_fran").hide();
  }
  else if(selectedValue == "fran")
  {
    $("#store_name_greece_fran").show();
    $("#store_name").hide();
  }
  else if(selectedValue == "-")
  {
    $("#store_name").hide();
    $("#store_name_greece_fran").hide();
  }
})
});
    </script>

形式:

<div class="form-group region required" data-cid="region">
  <label class="control-label" for="region">Region</label>

<div class="input-group"><span class="input-group-addon left"><i class="glyphicon glyphicon-pushpin"></i></span>
  <select class="select form-control" onChange="displayForm(this)" id="region" name="region">
    <option  value="-">- Select -</option>
    <option  value="america">America</option>
    <option  value="asia">Asia</option>
    <option  value="europe">Europe</option>
  </select>
</div>
</div>

<div id="country_europe" class="form-group country_europe required" style="display: none" data-cid="country_europe">
  <label class="control-label" for="country">Country</label>

<div class="input-group"><span class="input-group-addon left"><i class="glyphicon glyphicon-pushpin"></i></span>
  <select class="select form-control" id="country_europe_dd" name="country">
    <option  value="-">- Select -</option>
    <option  value="cyprus">Cyprus</option>
    <option  value="france">France</option>
    <option  value="germany">Germany</option>
    <option  value="greece">Greece</option>
    <option  value="iceland">Iceland</option>
    <option  value="italy">Italy</option>
    <option  value="netherlands">Netherlands</option>
    <option  value="norway">Norway</option>
    <option  value="serbia">Serbia</option>
    <option  value="switzerland">Switzerland</option>
  </select>
</div>
</div>

<div id="owned_gr" class="form-group owned_gr required" style="display: none" data-cid="owned_gr">
  <label class="control-label" for="owned_gr">Owned or Franchise ?</label>

<div class="input-group"><span class="input-group-addon left"><i class="glyphicon glyphicon-pushpin"></i></span>
  <select class="select form-control" id="owned_gr_dd" name="owned">
    <option  value="-">- Select -</option>
    <option  value="own">Owned</option>
    <option  value="fran">Franchise</option>
  </select>
</div>
</div>

<div id="store_name" class="form-group store_name required" style="display: none" data-cid="store_name">
  <label class="control-label" for="store_name">Store Name - Greece (Owned)</label>

<div class="input-group"><span class="input-group-addon left"><i class="fa fa-buysellads"></i> </span>
<select class="form-control" name="store_name[]" id="store_name_gr_owned"
    data-rule-required="true" >
  <option  value="-">- Select -</option>
  <option  value="option1">Option1</option>
  <option  value="option2">Option2</option>
  </select>
</div>

</div>

<div id="store_name_greece_fran" class="form-group store_name_greece_fran required" style="display: none" data-cid="store_name_greece_fran">
  <label class="control-label" for="store_name_greece_fran">Store Name - Greece (Franchise)</label>

<div class="input-group"><span class="input-group-addon left"><i class="fa fa-buysellads"></i> </span>
<select class="form-control" name="store_name[]" id="store_name_greece_fran"   
    data-rule-required="true" >
  <option  value="">- Select -</option>
  <option  value="athens">Athens</option>
  <option  value="crete">Crete</option>
  </select>
</div>

</div>

PHP:

$store_name = implode($_POST['store_name']);

2 个答案:

答案 0 :(得分:1)

编辑:从下面的评论中,解决#1的声音也将解决#2。

对于#1,每当hide元素时,也将其值设置为-。例如。

case "asia": 
    $("#country_asia").show();  
    $("#country_america").hide();
    $("#country_america").val("-");
    $("#country_europe").hide();
    $("#country_europe").val("-");      
    break;

或者,使用vanilla JS:

document.getElementById("country_europe_dd").value = '-';

对于#2,我看不到你的代码有什么问题。你能详细说说吗?可能包括您$store_name所见的样本输出?

答案 1 :(得分:0)

我找到了解决方案。

我必须在jQuery上更进一步并使用val()。当我在选择

的字段上选择特定值时,我重置了其他类别值
    $("#store_name_greece_fran_dd").change(function()
{
    var selectedValue=$(this).val().toLowerCase();
  if(selectedValue == "athens" || selectedValue == "athens" || selectedValue == "crete" || selectedValue == "crete")
  {
    $("#store_name_owned_dd").val('');
  }
})