2013-12-20 3 views
0

Надеюсь, что название получает идею через, но в основном у меня есть php-страница, содержащая несколько элементов формы, которые могут быть расширены с помощью jquery, поэтому пользователь может добавить несколько элементов к их порядку.PHP-проверка элементов формы, созданных с помощью jquery

<div class="orderSet" id="order1"> 
<select id="movie1" class="movie" name="movie"> 
    <option value="" disabled selected>Select movie</option> 
    <option value="godfather">The Godfather</option> 
      blah...blah.... 
    <option value="titanic">Titanic</option> 
</select><br> 
<select id="medium1" class="medium" name="medium"> 
    <option value="" disabled selected>Select format</option> 
    <option value="dvd">Movie on DVD</option> 
    <option value="bluray">Movie on BluRay</option> 
    <option value="poster">Original movie poster</option> 
</select> 
</div> 

Новый ДИВ имеет идентификатор orderN, где N это номер, присвоенный код JQuery, так же то же самое для кино и среднего идентификаторов. Есть ли способ получить это число, чтобы я мог создать массив элементов заказа? Я отлично загружаю номер обратно в скрипт, поэтому проверенная страница начинается с правильного количества элементов.

Сценарий создания этих дополнительных дивы является

$("#add").click(function() { 
    var intId = $("#orderItem div").length + 1; 
    var orderSet = $("<div class=\"orderSet\" id=\"order" + intId + "\"/>"); 
    var movie = $("<select id=\"movie" + intID + "\" class=\"movie\"><option value=\"\" disabled selected>Select movie</option><option value=\"godfather\">The Godfather</option>...more options...<option value=\"titanic\">Titanic</option></select><br>"); 
    var medium = $("<select id=\"medium" + intID + "\" class=\"medium\"><option value=\"\" disabled selected>Select format</option><option value=\"dvd\">Movie on DVD...more options...</select>"); 
    var removeButton = $("<input type=\"button\" class=\"remove\" value=\"remove\" />"); 
    removeButton.click(function() { 
     $(this).parent().remove(); 
    }); 
    orderSet.append(movie); 
    orderSet.append(medium); 
    orderSet.append(removeButton); 
    $("#orderItem").append(orderSet); 
}); 
+0

Таким образом, вы просто хотите, количество DIV сгенерирована с учетом добавления и удаления DIV? –

+0

Я думаю, что должен это сделать. Я могу создать массив оттуда и проверить каждый элемент в массиве. Возможно, это будет долгий процесс, но он должен сработать. Было бы неплохо создать имя динамической переменной, что-то вроде $ movie + number, но я могу обойти это. – Modred

+0

Рассмотрите возможность использования 'name =" order [] "', так как это создаст массив PHP при отправке формы. Вы можете использовать 'data-line =" 1 "' для простого обращения к jQuery. – rybo111

ответ

0

Первый метод

Создание массива var userSelection = new Array() при добавлении пользователя сделать

userSelection.push(intId) 

по удалению делать

// Find and remove item from an array 
var i = userSelection.indexOf(intId); 
if(i != -1) { 
    userSelection.splice(i, 1); 
} 

Второй способ:

Вы можете сохранить состояние пользователя в sesisonStorage, создать массив для сложения и вычитания или одного массива, что вы чувствуете, это хорошо и хранить его в sessionStorage

var addition = new Array(); 

на надстройке нажмите кнопку Добавить OrderItem к нему

addition.push(intId) // intId generated in your code 
sessionStorage.setItem('added', addition) 

на втором добавлении нажмите

sessionStorage.getItem('added').push(intId) 

Тогда вы можете отправить это через сервер в требуемом формате, то же самое можно сделать с удалением

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