Я использую список сортировки JQuery, который заменяет два элемента друг на друга. Каждый <li>
имеет уникальный id
и name
а значения получаются из файла php.
Образец HTML:
<ul id="sections" class="ui-sortable">
<li id="one" name="one" value="<?php echo $forms[0]; ?>" class="<?php echo $forms[0]; ?>">one</li>
<li id="onea" name="one_a" value="<?php echo $forms[1]; ?>" class="<?php echo $forms[1]; ?>"> two</li>
<li id="oneb" name="one_b" value="<?php echo $forms[2]; ?>" class="<?php echo $forms[2]; ?>">three</li>
<li id="two" name="two" value="<?php echo $forms[3]; ?>" class="<?php echo $forms[3]; ?>"> four </li>
<li id="twoa" name="two_a" value="<?php echo $forms[4]; ?>" class="<?php echo $forms[4]; ?>">five</li>
<li id="twob" name="two_b" value="<?php echo $forms[5]; ?>" class="<?php echo $forms[5]; ?>"> six </li>
</ul>
файл() php include():
<?php
$forms = array('fish','bird','tiger','dog','cat','elephant');
?>
Теперь используя $( "#sections").sortable({...
method, я могу, например, заменить <li>six</li>
на <li>two</li>
. В этом случае это означало бы перекладывая bird
со elephant
.
Проблема в том, что когда я использую это в приложении <form>
и POST
его в файл example.php
переменная $_POST
отправляет свой первоначальный заказ.
Итак, в этом случае $_POST['one-a'];
по-прежнему возвращается bird
не elephant
. Я использовал элемент проверки в своем браузере и увидел, что id
и name
перемещаются с помощью свопа. Так что #onea
и #twob
переместились.
Что я хочу сделать, это сохранить id
и name
заказа на месте и только имеют value
изменения, когда замена производится.
Таким образом, в этом сценарии elephant
будет размещен для нового id
onea
и name
one_a
.
Это возможно?
Спасибо за любую помощь.
Я смог использовать обходное решение, чтобы получить текущее value
. Используя JQuery и $.ajax()
я разместил data
после различных операторов if/else
.
Так что в основном это было что-то вроде этого;
JS:
var firstone = $('#sections #one');
var firstoneextra = firstone.hasClass("ui-selected");
if (firstoneextra){
var newone = //take the new selected value.
}else{
var newone = //keep the value it has already.
}...
и при обработке данных через $.ajax()
;
(образец):
data: 'one=' + newone ...
Это было бы либо POST
новое значение, если оно было выбрано, либо POST
значение, которое оно уже должно было начинать.