javascript - 主下拉菜单和 7 个子下拉菜单同名重置

标签 javascript ajax

我有一周中几天的主下拉菜单,每天都有一个同名的子下拉菜单。现在,当表单发布时,我们无法获取 selected 的值,因此我们需要重置所有其他子菜单并仅发送真正的选定值

<select name="Todays_Day" class="form-control input-lg form-el" id="tday" required>
<option value="" selected>When do you need us?</option>
<option value="Sunday 22-10-2017" >Sunday 22-10-2017</option>
<option value="Monday 23-10-2017" >Monday 23-10-2017</option>
<option value="Tuesday 24-10-2017" >Tuesday 24-10-2017</option>
<option value="Wednesday 25-10-2017" >Wednesday 25-10-2017</option>
<option value="Thursday 26-10-2017" >Thursday 26-10-2017</option>
<option value="Friday 27-10-2017" >Friday 27-10-2017</option>
<option value="Saturday 28-10-2017" >Saturday 28-10-2017</option>



 <div style='display:none; ' id='todayt'>
<select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option><option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option><option value="2:30 PM">2:30 PM</option><option value="3:00 PM">3:00 PM</option><option value="3:30 PM">3:30 PM</option><option value="4:00 PM">4:00 PM</option><option value="4:30 PM">4:30 PM</option><option value="5:00 PM">5:00 PM</option><option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='tomorrowt'><select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='aftertomt'><select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>


<div style='display:none; ' id='day4'><select name="date" class="form-control input-lg form-el" >    <option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day5'>
<select name="date" class="form-control input-lg form-el" >  
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day6'>
<select name="date" class="form-control input-lg form-el" >   
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day7'>
<select name="date" class="form-control input-lg form-el" >    
 <option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>                      

    <br><br> 

当我们发送表单时,结果为空,因为所选选项为

<option value="">What time?</option>

此外,如果您从主/子菜单中选择日期和时间,它们会移动到另一个日期的另一天和时间,它将仅发布第一个值,我们需要它来重置并发布最后一个实际选择的选项值

我们只需要得到真正选择的选项值的结果。

最佳答案

看看下面的解决方案,它保留当前选择的值并重置其他值。

//select the selects into an variable using querySelectorAll
var selects = document.querySelectorAll("select[name='date']");

//attach an onchange event to all selects. -- Use Array.prototype.forEach to iterate over nodelist
Array.prototype.forEach.call(selects, function(element){
  element.addEventListener("change", setPostValues);
});


function setPostValues()
{
  var self = this;
  //when element is not the changed element, reset to initial value.
  Array.prototype.forEach.call(selects, function(element){
    if (element != self)
    {
      element.value = "";
    }
  });  
}
div{
  display: block !important;
}
<div style='display:none; ' id='todayt'>
<select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option><option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option><option value="2:30 PM">2:30 PM</option><option value="3:00 PM">3:00 PM</option><option value="3:30 PM">3:30 PM</option><option value="4:00 PM">4:00 PM</option><option value="4:30 PM">4:30 PM</option><option value="5:00 PM">5:00 PM</option><option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='tomorrowt'><select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='aftertomt'><select name="date" class="form-control input-lg form-el" >    
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>


<div style='display:none; ' id='day4'><select name="date" class="form-control input-lg form-el" >    <option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day5'>
<select name="date" class="form-control input-lg form-el" >  
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day6'>
<select name="date" class="form-control input-lg form-el" >   
<option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>

<div style='display:none; ' id='day7'>
<select name="date" class="form-control input-lg form-el" >    
 <option value="">What time?</option>
<option value="9:30 AM">9:30 AM</option>
<option value="10:00 AM">10:00 AM</option>
<option value="10:30 AM">10:30 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="11:30 AM">11:30 AM</option>
<option value="12:00 PM">12:00 PM</option>
<option value="12:30 PM">12:30 PM</option>
<option value="1:00 PM">1:00 PM</option>
<option value="1:30 PM">1:30 PM</option>
<option value="2:00 PM">2:00 PM</option>
<option value="2:30 PM">2:30 PM</option>
<option value="3:00 PM">3:00 PM</option>
<option value="3:30 PM">3:30 PM</option>
<option value="4:00 PM">4:00 PM</option>
<option value="4:30 PM">4:30 PM</option>
<option value="5:00 PM">5:00 PM</option>
<option value="5:30 PM">5:30 PM</option></select>
</div>                      

    <br><br>

关于javascript - 主下拉菜单和 7 个子下拉菜单同名重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872691/

相关文章:

javascript - 如何在一个时间间隔内停止对一个函数的多次调用?

javascript - JQuery $.ajax() post - java servlet 中的数据

php - 在 PHP 中创建用于聊天的客户端

javascript - 对 Django 的 Ajax 请求返回 404 not found

javascript - 如何将 Froala Editor 文件上传与 Rails 4.2 集成

javascript - 基于 url 的隐藏/显示 div 在多 html 页面的第一次加载时不起作用

javascript - 检测用户何时使用 CSS 调整 Div 大小 : both

javascript - 类似灯箱的叠加效果,可在单击时显示隐藏的 DIV

javascript - 如何编辑单行?

php - 如何在 AJAX 密集型应用程序中处理大量 HTML 数据?