Как установить значение имени элемента ввода, внутри прозрачного div, по капле? - PullRequest
0 голосов
/ 14 апреля 2020

Я перетаскиваю элемент в элемент ввода и устанавливаю имя элемента ввода равным идентификатору перетаскиваемого элемента. Затем я читаю значение имени входного элемента для хранения в БД. Это работает. Однако теперь я хочу сделать элемент ввода перетаскиваемым после его заполнения, чтобы при необходимости его можно было удалить. Я делаю это, помещая прозрачный div над элементом input, чтобы div можно было перетащить вместе с элементом input, чтобы удалить его. Теперь я не могу получить значение имени входного элемента (или значение имени входного элемента не установлено). Я полагаю, что последнее имеет место.

Это работает: Создайте таблицу:

newRows +=      "<table name ='activityTable'>";
newRows +=          "<tbody id='activity2Tablebody' name='test1'>";
newRows +=              "<tr>";
newRows +=                  "<td class='dropValue' name='test2'>";
newRows +=                      "<div class='dragabbleRemove'>";
newRows +=                          "<input class='droppableItem activityWidth' name='test3' disabled></input>";//Droppable Activity Class
newRows +=                      "</div>";
newRows +=                  "</td>";
newRows +=              "</tr>";
newRows +=          "</tbody>";
newRows +=      "</table>";

При отбрасывании установите значение свойства name равным значению свойства id перетаскиваемого элемента. :

draggableId = (draggable.prop('id'));
droppable.prop('name', draggableId);

Получить значение свойства name:

alert ("$(this).find('input').attr('name'): " + $(this).find('input').attr('name'));//id value

Затем я помещаю прозрачный элемент div над элементами входов, чтобы его можно было перетащить, чтобы удалить его:

newRows += "<div class='dragabbleRemove'><div>&nbsp;</div>";
newRows +=      "<input class='droppableItem activityWidth' name='test3' disabled></input>";//Droppable Activity Class
newRows += "</div>";

Теперь это возвращает пустое значение:

alert ("$(this).find('input').attr('name'): " + $(this).find('input').attr('name'));//id value

Я подозреваю, что необходимо изменить следующую строку, чтобы установить значение имени входного элемента; однако, я не могу узнать, что нужно изменить (правильный код):

droppable.prop('name', draggableId);

1 Ответ

0 голосов
/ 14 апреля 2020

ОК, я вставил несколько дисплеев и строки:

draggableId = (draggable.prop('id'));
droppable.prop('name', draggableId);

работают.

В конце концов после долгих проб и ошибок я заменил:

alert ("$(this).find('input').attr('name'): " + $(this).find('input').attr('name'));//id value

с:

$(this).find('input[type="text"]').each(function(index,elem){
    alert(elem.name);
});

И добавил "type = 'text'" к элементу ввода.

...