Как обрабатывать несколько дропбоксов с одинаковыми именами? - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь иметь в своем коде серию дропбоксов, количество дропбоксов будет определяться в цикле. Каждый выпадающий список отражает разные дни, а каждый параметр в отдельном окне - разное время.

Только один из этих моментов должен быть выбран пользователем, чтобы его можно было передать.

Так что мой HTML будет выглядеть следующим образом:

<form id="form" name="form" method="post" action="confirmation.cshtml">
   <select name="start_to_end_time" class="start_to_end_time">
      <option value="1">1</option>
      <option value="2">2</option>
   </select>

   <select name="start_to_end_time" class="start_to_end_time">
      <option value="3">3</option>
      <option value="4">4</option>
   </select>

   <button type="submit">Submit</button>
</form>

С изменяемым количеством тегов. Каков мой лучший способ справиться и проверить это? Я попытался сделать это с помощью JavaScript и отключить все остальные дни, когда выбран один день, однако это привело к ошибкам. Может ли кто-нибудь помочь мне с этим, пожалуйста?

1 Ответ

0 голосов
/ 19 марта 2012

Я выбираю другой маршрут.Я решил добавить класс в список выбора, над которым я работаю, и скрыть остальные.Затем я выбираю захват отправки формы и отслеживаю количество объектов, которые хранятся в нашей форме на момент публикации.если количество объектов больше или меньше 1, я выбираю оповещение о работе с формой;иначе, если длина равна 1, обработайте форму.Я также прокомментировал пример запроса ajax, показывающий, как передавать данные на ваш контроллер.Я думаю, это то, что вы хотели сделать - или что-то в этом роде?Я могу ошибаться, и если я ошибаюсь, я исправлюсь!

http://jsfiddle.net/y6zLQ/4/

для долгосрочных целей

$(function(){
  $("select").on('click', function(){
    //add a unique class identifier
    $(this).addClass('working');
    $("select:not('.working')").hide(100);
  });  
  $("#form").submit(function(e){
    e.preventDefault(); // stop default form submission
    var visLength = $("select:visible").length; //how many select fields are visible?
    if(visLength > 1 || visLength < 1){//if we have more/less than 1 visible field.
      alert('Please choose a value from the lists provided.');      
    }else if(visLength == 1){//we only have one field, proceed.
      var visValue = $("select:visible").val();
      alert(visValue);
     // $.ajax({
     //     url: 'confirmation.cshtml'      
     //     data: 'selectVal='+visValue,
     //     success: function(data){
     //       //do something with our returned data.
     //       $("#someElement").html(data);
     //       //or don't. Perhaps you want to change the page.
     //       window.location = 'mywebsite.com/newlocation';
     //     }
     // });
    }
  });    
  //build a reset function so they can choose a different date.    
  $("#reset").click(function(e){
    e.preventDefault(); // stop default form submission
    $("select").removeClass('working'); //remove unique class identifier
    $("select").show(100); //show other selec tlists
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...