Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача массива полей. Javascript
 
 автор: LimP   (02.05.2009 в 16:12)   письмо автору
 
 

здравствуйте. помогите решить проблему, ибо сам уже извелся весь. у меня есть три поля id | title | type , рядом 2 кнопочки + | - плюсом добавляется еще одно поле, минусом соответственно удаляется. эдакая динамическая вещь, которой можно создавать сколько угодно полей, задавай каждому id, title и выбирать тип type (выпадающий список): строка(~input type=text), текст(~textarea), число(~input type=text) и все это делаю serialize и пихаю в базу. суть проблемы в том что кнопочками поля создаются и удалются, все хорошо, но! при обработке он не передает массив этих полей. тоесть должен быть массив [property_id] => Array ( [ключ] => значение ) массив [property_title] => Array ( [ключ] => значение_title ) и массив [property_type] => Array ( [ключ] => значение_type ).
когда же кнопочки +\- не нажимаю и добавляю всего один элемент, все работает и пишется, обрабатывается. я вывел массив _REQUEST, короче тупо не передаются массивы эти значений, а когда одно это поле, тогда выдается, следовательно проблема в яваскриптном добавлении полей. поправьте пожалуйста.

<script language="javascript">
<!--

function addline() {
    c=++document.getElementById('count').value;
    s=document.getElementById('properties').innerHTML;
    s=s.replace(/[\r\n]/g,'');
    re=/(.*)(<tr id=.*>)(<\/table>)/gi;
    re2=/\[\d+\]/gi;
    s1=s.replace(re,'$2');
    s2=s1.replace(re2,'['+c+']');
    s2=s2.replace(/(readonly)/gi,'');
    s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
    s=s.replace(re,'$1$2'+s2+'$3');
    document.getElementById('properties').innerHTML=s;
}

function rmline(q) {
    p = document.getElementById('property_id['+q+']').value;
    rem = document.getElementById('rem_properties').value;
    document.getElementById('rem_properties').value = rem + '|' + p;
    s=document.getElementById('properties').innerHTML;
    s=s.replace(/[\r\n]/g,'');
    re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
    s=s.replace(re,'');
    document.getElementById('properties').innerHTML=s;
}

function property2rem (p) {
    rem = document.getElementById('rem_properties').value;
    document.getElementById('rem_properties').value = rem + '|' + p;
}

-->
</script>

...

<input type="hidden" name="count" id="count" value="0">
<input type="hidden" name="rem_properties" id="rem_properties" value="">

<span id="properties">
<table border=0 cellspacing=2 cellpadding=2 width="100%" class="editdata">
<tr>
    <tr>
        <td width="30%" style="font-size: 11px; color:#c0c0c0;">id:</td>
        <td width="50%" style="font-size: 11px; color:#c0c0c0;">название:</td>
        <td width="10%" style="font-size: 11px; color:#c0c0c0;">тип:</td>
        <td width="10%" align="center"><div><spacer /></div></td>
</tr>
<tr id="newline" nomer="[0]">
    <td width="30%"><input type="text" name="property_id[0]" id="property_id[0]" value="" style="width:100%"></td>
    <td width="50%"><input type="text" name="property_title[0]" id="property_title[0]" value="" style="width:100%"></td>
    <td width="10%">
        <select name="property_type[0]" id="property_type[0]">
        <option></option>
        <option value="string">строка</option>
        <option value="text">текст</option>
        <option value="int">число</option>
        </select>
    </td>
    <td valign="top"align="right"><input type="button" onclick="rmline(0)" value="-" style="width:22px"></td>
    <td valign="top"align="left"><input type="button" onclick="addline()" value="+" style="width:22px"></td>
</tr>
</table>
</span>

  Ответить  
 
 автор: PAT   (03.05.2009 в 00:32)   письмо автору
 
   для: LimP   (02.05.2009 в 16:12)
 

Значится, так:
1. Добавление новых РЕАЛЬНЫХ элементов в существующую форму осуществляется ТОЛЬКО методами creatеElеment и appendChild. Всё прочее - от лукавого и, соответственно, в этом случае браузер может только ПОКАЗАТЬ новый элемент на странице, но РЕАЛЬНО там его НЕ БУДЕТ.

2. При создании нового элемента необходимо помнить, что браузер MSIE при этом ИГНОРИРУЕТ прямое указание элемент.name = 'чего-то'. Информацию об имени элемента для MSIE надо вносить непосредственно в метод creatеElеment.

Подробнее (с примером и описанием) смотрите здесь, где ищете сообщение от CNT (23.01.2008 в 13:11) - это мой старый никнейм на этом форуме - и далее по ветке.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования