Как реализовать?
Доброй ночи, уважаемые пользователи форума. Я прошу вашей помощи. Прошу прощения, если разместил в неправильной ветки. Не знаю куда лучше отнести вопрос.
Как в у форм сделать что то вроде наследования... Исправил, удалил лишнее оставил важный пример. Предположим, имеется массив форм (идентичных) по своему составу: <p> <input id="1" type="text" name="label[]" value="текст из инпута 1" ../> <!-- название работы которая идет в список (select) --> </p> <p> <input id="2" type="text" name="label[]" value="текст из инпута 2" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="3">текст из инпута 3</option> </select> </p> <p> <input id="3" type="text" name="label[]" value="текст из инпута 3" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="2">текст из инпута 2</option> </select> </p> <!-- и так далее до бесконечности --> как в селект, выбор запихнуть данные из инпутов со всех? и брать ихний ид? 1,2,3,++ |
Вы опубликовали очень много кода.
Пожалуйста, локализуйте проблему! Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно. И, по возможности, уберите из кода мусор, чтобы нам легче было сориентироваться и помочь решить вашу проблему. Спасибо. P.S. код форматируют специальные теги [ js ] ... [/js], [ html ] ... [/html] и другие аналогичные, сам. http://javascript.ru/formatting |
лучше всего сделать выборку по классу
или найти контейнер всех форм(formcontainer) и искать в нём по тегу <P> как в вашем случае. пример ниже берёт данные из всех форм, поиск по классу. дальше задачу я не понял. поэтому просто собрал данные в массив, и вывел его но вы вместо заполнения массива можете в этом цикле делать именно то что вам надо. upd/ если я правильно сейчас догонять начал, то храните связь инпута и options в атрибутах. Это может быть id inputa в атрибуте option как пример, или атрибут в input с порядковым номером option, и 100500 других вариантов в придачу. Если бы вы задачу точнее уточнили, то я бы точнее посоветовал. <div id="formcontainer"> <p class="superform"> <input id="2" type="text" name="label[]" value="текст из инпута 2" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="3">текст из инпута 3</option> </select> </p> <p class="superform"> <input id="3" type="text" name="label[]" value="текст из инпута 3" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="2">текст из инпута 2</option> </select> </p> <!-- и так далее до бесконечности --> </div> <script> var forms=document.getElementsByClassName('superform') ; var data=[]; for (var i=0,length=forms.length;i<length;i++){ data.push ( forms[i].getElementsByTagName("input")[0].value ); } alert (data); </script> |
Вы правильно подумали, "то храните связь инпута и options в атрибутах. Это может быть id ..."
|
up Кто знает решение?
|
<script src="http://code.jquery.com/jquery-latest.js"></script> <div id="formcontainer"> <p class="superform"> <label for="2">инпут 2</label><br /> <input id="2" type="text" name="label[]" value="текст из инпута 2" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="3">текст из инпута 3</option> </select> </p> <p class="superform"> <label for="3">инпут 3</label><br /> <input id="3" type="text" name="label[]" value="текст из инпута 3" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="1">текст из инпута 1</option> <option value="2">текст из инпута 2</option> </select> </p> <p class="superform"> <label for="4">инпут 4</label><br /> <input id="4" type="text" name="label[]" value="текст из инпута 4" ../> <!-- название работы которая идет в список (select) --> <select multiple name="parent[]"> <option disabled>выбор из уже описанных инпутов</option> <option value="2">текст из инпута 2</option> <option value="3">текст из инпута 3</option> <option value="4">текст из инпута 4</option> </select> </p> <!-- и так далее до бесконечности --> </div> <script> $(document).ready(function(){ function PresetTxtOpt(){ var a = 'parent[]'; $("p.superform select[name='"+a+"'] option").each(function(i){ if(!$(this).parent().find('option').index(this)){return true;} var ID=$(this).val(); var TxtOpt=$("p.superform input[id='"+ID+"']").val(); if(TxtOpt)TxtOpt=TxtOpt.replace(/^\s*/g,''); if(TxtOpt){ $(this).removeAttr('disabled'); $(this).text(TxtOpt); } var txt = '(не найден/не заполнен)'; if(!TxtOpt){ $(this).text($(this).text().replace(txt,'')+txt); $(this).attr('disabled',true); } }); } PresetTxtOpt(); $("p.superform select").change(function(){ PresetTxtOpt(); }); $("p.superform input").bind('input keyup mouseup',function(){ PresetTxtOpt(); }); }); </script> |
Вау... спасибо, только не много не так. на примере инпута 4, он показывает в выборе и свой тоже. А хотелось бы, что бы предлагали все варианты инпутов кроме того в котором список >.<
|
RodgerFox,
Я показал что можно воткнуть любые, cкрипт смотрит по option в селекторе Незаполненные или отсутствующие инпут - выбор блокируется, Перерисовка контента option => при выборе option или заполнении инпут |
Спасибо поиграюсь с этим сейчас, надеюсь что то из этого сооружу.
|
Посмотрите пожалуйста
http://algoritm.rodgerfox.jino.ru/index.html Первый селект обновляется только, если во второй инпут ввести что то и нажать или на первый инпут или на селект первый. почему так происходит? Большое спасибо. |
Часовой пояс GMT +3, время: 04:41. |