Как динамически создать строку с разделителями с помощью Jquery?

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

То, как я собираюсь справиться с этим, - это создать строку с разделителями и опубликовать ее обратно.

Как мне создать строку динамически, добавив значение, подобное следующему: 23| каждый раз, когда пользователь нажимает кнопку? Например, если пользователь нажмет кнопку 3 раза, результат будет 23|25|26| а затем, когда они нажали «Сохранить», это значение можно было отправить обратно для обработки.

Это код, который у меня есть для функции удаления до сих пор, но он только удаляет строки таблицы, а не генерирует строку.

$(".reMove").live('click', function(e) {
    $(this).parent().parent().remove();


     var al = $(this).attr('rel');


    $("#form1").find(".del").val(al);


    e.preventDefault();

    sortt();

});

person user794846    schedule 12.06.2011    source источник
comment
Вы пробовали $(fieldId).val($(fieldId).val()+|+(cnt++))   -  person mplungjan    schedule 12.06.2011
comment
возможный дубликат Добавить текст в поле ввода   -  person mplungjan    schedule 12.06.2011


Ответы (2)


Я бы использовал массив:

var deletions = [];

// When deleting
deletions.push(value);

// When sending to your PHP script, create a string via Array#join
var deletionsString = deletions.join("|");

В качестве альтернативы, если хотите, вы можете просто использовать строку и добавить к ней:

var deletions = "";

// When deleting
deletions += "|" + value;

// When sending to your PHP script
if (deletions.length > 0) {
    deletions = deletions.substring(1); // Skip the leading "|"
}

... но я предпочитаю маршрут массива.

person T.J. Crowder    schedule 12.06.2011
comment
@Pointy: при отправке массива в PHP? Да, это хороший вариант, если ОП открыт для изменения формата. Имейте в виду, что все еще существует множество браузеров, в которых нет JSON.stringify, поэтому нужно добавить еще один скрипт (если только они не являются числами, в этом случае создать JSON вручную несложно). - person T.J. Crowder; 12.06.2011
comment
попробует приведенные выше решения и свяжется с вами. - person user794846; 12.06.2011

Я вижу, у тебя здесь форма. Вы можете динамически создать скрытый ввод:

var $input = $('<input/>')
    .attr('type', 'hidden')
    .attr.('name', 'del[]')
    .val(al);
$("#form1").append($input);

Вернув эту форму обратно, вы можете просто удалить все записи из массива $_POST['del']. Может быть, это то решение, которое вы ищете?

person Szymon Wygnański    schedule 12.06.2011