2012-02-13 2 views
0

У меня есть проблема в настоящее время я сделать следующийПерестановка массива в JQuery

Html

<input type="text" name="Answers[0]" class="ahsan required" ><a href="#">Remove</a> 
<input type="text" name="Answers[1]" class="ahsan required" ><a href="#">Remove</a> 
<input type="text" name="Answers[2]" class="ahsan required" ><a href="#">Remove</a> 
<input type="text" name="Answers[3]" class="ahsan required" ><a href="#">Remove</a> 
<input type="text" name="Answers[4]" class="ahsan required" ><a href="#">Remove</a> 
<input type="text" name="Answers[5]" class="ahsan required" ><a href="#">Remove</a> 

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

+0

Попробуйте это http://jsfiddle.net/FfFT9/ –

ответ

1

если yo're не использовать его числовые индексы для других целей, просто попробуйте удалить их из названия, имеющие строки как

<input type="text" name="Answers[]"... 

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

в противном случае каждый раз, когда вы обновляете использовать DOM-то вроде

$(".ahsan").each(function(i){ 
    $(this).attr({name : "Answer[" + i + "]"}); 
}) 
+0

Я не могу чувак, потому что проверка jquery выполняется, и эти счетчики для jquery, потому что, если у меня есть одно имя, jquery будет проверять только одно текстовое поле и сказать, что ваша форма действительна ..... Любая другая идея? –

+0

@AhsanAshfaq, см. Ответ yorgo или упрощенную версию этого кода в моем обновлении – fcalderan

0
function reArrangeItems(){ 
    var i = 0; 
    $(".ahsan").each(function(){ 
     $(this).attr({name : "Answer[" + (i++) + "]"}); 
    }) 
} 

вызова этой функции после вставки и удаления

+2

, он должен быть '$ (this) .attr ({name:" Answer ["+ (i ++) +"] "});'? Кроме того, вы также можете использовать итератор 'each' с' .each (function (i) {.. ' – fcalderan

+0

yeap ur right :) – Yorgo

+0

@Yorgo и Fabrizio ......... Dudes действительно очень благодарен этому решить мою проблему. Я очень благодарен вам обоим –