2015-02-11 4 views
0

Итак, это довольно сложно объяснить, а также искать.Получить входное значение от ввода в массиве

Мое положение: У меня есть веб-страница, которая позволяет пользователям заполнять до 48 временных полей, все эти поля времени генерируются динамически, каждый из которых имеет свой собственный идентификатор, все в div.

Теперь у пользователя также есть возможность удалить поле в любом месте. В этом случае я хочу переупорядочить их всех. Пример: пользователь имеет временные рамки от 1 до 8, удаляет 5. 6 становится 5, 7 становится 6, 8 становится 7. Это также должно учитываться для идентификаторов.

Теперь, когда пользователь удаляет ящик, я забираю все div в определенном div (DailyControls) и помещаю их в массив. Все эти div имеют класс с именем timepicker.

Теперь мне нужно получить значение из полей ввода, которые теперь также хранятся в массиве.

Это для создания текстовых полей (с DIV, некоторый текст InFront и кнопка Удалить)

var newTextBoxDiv = $(document.createElement('div')).attr("ID", 'time' + boxID); 

       newTextBoxDiv.after().html('<label>Herrinering #' + boxID + ' : </label>' + 
      '<input type="text" name="timebox' + boxID + 
      '" id="timebox' + boxID + '" value="" class="timepicker" >' + '<img src="<%= Page.ResolveUrl("~") %>images/ico_delete.png" id="Delete'+ boxID +'" onclick="DeleteTime()"/>'); 

       newTextBoxDiv.attr("class", "timerdiv"); 

Чтобы удалить их я в настоящее время с помощью следующего:

function DeleteTime() { 
      var id = event.target.id; 
      var IdNO = id.replace("Delete", ""); 

      $("#time" + IdNO).remove(); 

      var elemdivs = []; 

      for (var i = 0; i < $(".timerdiv").length; i++) { 
       elemdivs.push($(".timerdiv")[i].innerHTML); 
      } 

      $('.timerdiv').remove(); 
      for (var i = 0; i < elemdivs.length; i++) { 
       alert(elemdivs[i]); 
      } 
     }; 

в боевой готовности я вижу элемент ввода, а также элемент div. Но я не знаю, как получить значение оттуда

+1

для повторного заказа, если они имеют одинаковые классы, а идентификатор или порядковый номер - это целое число, вы можете выполнить функцию 'each()' в jQuery и заменить атрибут id o order с целым числом, которое начинает отсчет с 1 – Cheshire

ответ

0

На основании информации, предоставленной вами это будет, вероятно, работать:

function DeleteTime() { 
     var id = event.target.id; 
     var IdNO = id.replace("Delete", ""); 

     $("#time" + IdNO).remove(); 

     var elemdivs = []; 

     for (var i = 0; i < $(".timerdiv").length; i++) { 
      elemdivs.push($(".timerdiv")[i]); // don't push innerHTML 
     } 

     $('.timerdiv').remove(); 
     for (var i = 0; i < elemdivs.length; i++) { 
      alert($(elemdivs[i]).find('input').val()); 
     } 
    }; 

Вместо того, чтобы вставить innerHTML из вашего timerdiv в вы положили в самом timerdiv , Затем при доступе к нему вы вводите поле ввода внутри таймера div ($(elemdivs[i])), а затем получите .val().

+0

Это действительно трюк! Благодаря! – Vincentw

Смежные вопросы