[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вложеные формы
luker
Всем привет. Как известно вложенные формы не поддерживаются? А как можно обойти тогда это явление если уж очень надо.? пример.
HTML
<FORM name="aform" method="post" action="" >
<?foreach($rules as $key=>$val){?>
<FORM name="lr<?=$val['id']?>" method="post" action="">
тут создается множество форм так как проходит по foreach
в этих формах есть обработкак cheachox с помощью javascript
</FORM>
<?}?>
в этой форме есть тоже cheachbox которые заполняются в веше стоящем foresch и кнопка которая по выбору cheackbox будет удалять некоторые данные
<INPUT class="button" type="submit" name="delete" value=" Delete "></TD>
</FORM>

Понятное дело работать не будет, а очень надо). кто подскажет решение данной проблеммы?



Спустя 3 минуты, 49 секунд (19.05.2009 - 10:29) vasa_c написал(а):
Сформулируйте словами что конкретно "очень надо".

Спустя 7 минут, 14 секунд (19.05.2009 - 10:36) FatCat написал(а):
Вложенные динамические формы поддерживаются всеми браузерами, кроме ИЕ... sad.gif

В Опере и Лисе работает отлично:
HTML
<form action="" method="post" name="ext" id="ext">
<script type="text/javascript">
document.write('<form action="" method="post" name="int" id="int">');
document.write('<бла-бла-бла>');
document.write('</form>');
</script>
</form>

Спустя 13 минут, 52 секунды (19.05.2009 - 10:50) sergeiss написал(а):
А почему это не сделать в одной форме, зачем какие-то вложенности?

Спустя 2 минуты, 50 секунд (19.05.2009 - 10:53) waldicom написал(а):
Если уж очень надо, то надо подумать, а надо ли оно? Что можно сделать вложенными формами, чего нельзя сделать обычными?

Спустя 14 минут, 20 секунд (19.05.2009 - 11:07) luker написал(а):
к сожалению по другому не как(все было отлично пока заказчик не захотел фантастики). просто в во внутренней форме есть возможность пред выбора данных внутри маленький таблиц + удалении элементов. если избегать вложенности то одна из функциональностей перестает работать((.

Спустя 6 минут, 32 секунды (19.05.2009 - 11:14) sergeiss написал(а):
Цитата (luker @ 19.05.2009 - 11:07)
если избегать вложенности то одна из функциональностей перестает работать((.

Не верю! smile.gif

Не может такого быть. Надо просто продумать логику, и всё будет.

Спустя 3 минуты, 35 секунд (19.05.2009 - 11:17) luker написал(а):
проблема в том что во вложенной форме очень большая функциональность и если ее переделовать, то это займет намного больше затрат чем уговорить заказчика отказаться от этой идет. Просто под сознательно понимаю что как то все таки народ справляется с этой проблемой тока вот как?

Спустя 6 минут, 19 секунд (19.05.2009 - 11:23) sergeiss написал(а):
Ты пока говоришь "вокруг да около". Покажи, как у тебя сделано. Но не в виде кода, а просто некую схему: вот такие чекбоксы в таких-то местах, вот так-то они должны работать.
И проблему, я думаю, решим.

Спустя 40 минут, 12 секунд (19.05.2009 - 12:04) waldicom написал(а):
Цитата (sergeiss @ 19.05.2009 - 09:14)
Цитата (luker @ 19.05.2009 - 11:07)
если избегать вложенности то одна из функциональностей перестает работать((.

Не верю! smile.gif

Не может такого быть. Надо просто продумать логику, и всё будет.

Однозначно!

Спустя 6 часов, 43 минуты, 37 секунд (19.05.2009 - 18:47) luker написал(а):
HTML
<FORM method="post" action="">

<INPUT type="checkbox" name="ids[]" value="270">270

<FORM name="lr270" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="270">
<INPUT type="checkbox" name="ln270" value="270">270
</FORM>

<INPUT type="checkbox" name="ids[]" value="286">286

<FORM name="lr286" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="286">
<INPUT type="checkbox" name="ln286" value="286">286
</FORM>

<INPUT type="checkbox" name="ids[]" value="292">292

<FORM name="lr286" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="292">
<INPUT type="checkbox" name="ln292" value="292">292
</FORM>
<INPUT type="hidden" name='ids' value="">
<INPUT class="button" type="submit" name="delete" value=" Delete " onclick=" return confirm('Are you sure that you want to delete this items?');" >
</FORM>


Вот получается вот такой результат, но это все наброске на самом деле все это еще в табличка и в каждом внутренней форме есть много всяких приколов с джааой скрипт которые работают с отдельно взятой формой. В даном случае не работает delet который выбран во внешней форме? а как сделать чтобы работало?

Спустя 2 часа, 35 минут, 7 секунд (19.05.2009 - 21:22) sergeiss написал(а):
Следи за моей мыслью...

Во-первых, я оставлю только 2 "вложенные" формы, точнее, сделаю из них нечто другое. Сравни со своим текстом, специально их рядом ставлю.

Цитата (luker @ 19.05.2009 - 18:47)
HTML
<FORM method="post" action="">

    <INPUT type="checkbox
" name="ids[]" value="270">270

    <FORM name="lr270" id="lrm" method="post" action="">
    <INPUT type="hidden
" name='r_act' value="">
    <INPUT type="hidden
" name='id' value="4">
    <INPUT type="hidden" name='r_id' value="270">
<INPUT type="checkbox" name="ln270" value="270">270
    </FORM>

    <INPUT type="checkbox" name="ids[]" value="286">286

    <FORM name="lr286" id="lrm" method="post" action="">
    <INPUT type="hidden
" name='r_act' value="">
    <INPUT type="hidden
" name='id' value="4">
    <INPUT type="hidden" name='r_id' value="286">
<INPUT type="checkbox" name="ln286" value="286">286
    </FORM>

    <INPUT type="checkbox" name="ids[]" value="292">292

    <FORM name="lr286" id="lrm" method="post" action="">
    <INPUT type="hidden
" name='r_act' value="">
    <INPUT type="hidden
" name='id' value="4">
    <INPUT type="hidden" name='r_id' value="292">
     <INPUT type="checkbox" name="ln292" value="292">292
    </FORM>
<INPUT type="hidden" name='ids' value="">
<INPUT class="button
" type="submit" name="delete" value=" Delete " onclick=" return confirm('Are you sure that you want to delete this items?');" >
</FORM>


Вот получается вот такой результат, но это все наброске на самом деле все это еще в табличка и в каждом внутренней форме есть много всяких приколов с джааой скрипт которые работают с отдельно взятой формой. В даном случае не работает delet который выбран во внешней форме? а как сделать чтобы работало?


HTML
<FORM method="post" action="" onsubmit=" return confirm('Are you sure that you want to delete these items?');">

<INPUT type="checkbox" name="ids[]" value="270">270

<INPUT type="hidden" name='r_act_270' value="</span>">
<INPUT type="hidden" name='id_270' value="4">
<INPUT type="hidden" name='r_id_270' value="270">

<INPUT type="checkbox" name="ids[]" value="286">286

<INPUT type="hidden" name='r_act_286' value="</span>">
<INPUT type="hidden" name='id_286' value="4">
<INPUT type="hidden" name='r_id_l286' value="286">

<INPUT class="button" type="submit" name="delete" value=" Delete " >
</FORM>


Плюс ко всему - следи, чтобы не было одинаковых имен!!!

А далее... Ты определяешь, например, что в массиве ids был выбран элемент с величиной 286. Это означает, что тебе нужно перебрать массив $_POST, найти там элементы с именами r_act, id, r_id, у которых в конце имени есть "довесок" "_286". Выбрать то, что записано в их величинах.
Ну, и так далее для всех выбранных величин.
И запрос на подтверждение надо в другом месте делать. Смотри в текст, где именно.

Спустя 1 день, 17 часов, 50 минут, 13 секунд (21.05.2009 - 15:13) luker написал(а):
В таком случае перестает работать джава скрипт которая находится внутри вложены скриптов. просто я не могу кинуть весь код сюда там более 2к строк. причем все в табличной верстке.
Решение конечно найдено, но оно не универсально((.
мот код может кому пригодится)
HTML
<script language="JavaScript" type="text/javascript">
var ForwardIds = new Array();
function CheckForwardId(id, s) {
j=-1;
for (i=0; i<ForwardIds.length; i++) {
if(ForwardIds[i] == id) {
j=i;
break;
}
}
if(s) {
if(j<0) ForwardIds[ForwardIds.length] = id;
} else {
if(j>=0) ForwardIds.splice(j,1);
}
document.ftest.ids.value=ForwardIds.join(',');
}
</SCRIPT>



<INPUT type="checkbox" name="ids[]" value="270" onclick="CheckForwardId(this.value, this.checked)">270

<FORM name="lr270" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="270">
</FORM>

<INPUT type="checkbox" name="ids[]" value="286" onclick="CheckForwardId(this.value, this.checked)">286

<FORM name="lr286" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="286">
</FORM>

<INPUT type="checkbox" name="ids[]" value="292" onclick="CheckForwardId(this.value, this.checked)">292

<FORM name="lr286" id="lrm" method="post" action="">
<INPUT type="hidden" name='r_act' value="">
<INPUT type="hidden" name='id' value="4">
<INPUT type="hidden" name='r_id' value="292">
</FORM>



<FORM method="post" action="">
<INPUT type="hidden" name='ids' value="">
<INPUT class="button" type="submit" name="delete" value=" Delete " onclick="this.form.ids.value=ForwardIds.join(','); return confirm('Are you sure that you want to delete this items?');" >
</FORM>

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.