Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Динамически редактируемая html таблица (https://javascript.ru/forum/misc/52762-dinamicheski-redaktiruemaya-html-tablica.html)

Krio 05.01.2015 21:45

Динамически редактируемая html таблица
 
Доброго времени суток, форумчане!
Проблема в том, что возникла задача в реализации динамической таблицы на сайте. Дабы не париться с подключаемыми pear и прочими библиотеками было решено сделать это всё на php, html, js

Привожу кусочек кода:

$(function ()    {
    $('td#editable').click(function(e)    {
        var t = e.target || e.srcElement;
        var elm_name = t.tagName.toLowerCase();
        if(elm_name == 'input') {return false;}
        var val = $(this).html();
        var code = '<input type="text" name="ids" id="edit" size=5px value="'+val+'"/>'; 
        var name = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
		for (var name in val) {
		var val=name[name];
		};
		$(this).empty().append(code);
        $('#edit').focus();
        $('#edit').blur(function()  {
            var val = $(this).val();
            $(this).parent().empty().html(val);
        });
    });

    $(window).keydown(function(event){
        if(event.keyCode == 13) {
            $('#edit').blur();
        }
    });
});


Но сама задача такова - сделать это для каждого элемента статичной таблицы с возможностью записи в переменные php для записи в базу данных

знаний ajax и js всего-ничего, прошу вашей помощи :с

Krio 06.01.2015 06:57

просто кусочек говнокода, пытался реализовать это через массивы.

danik.js 06.01.2015 10:41

Если таблица не слишком большая - зачем париться с динамическими временными инпутами? Тем более если данные надо будет отправлять на сервер - инпуты сделают все за тебя.

Krio 06.01.2015 14:04

прошу прощения, я не ясно разъяснил свою задачу

с таблицей проблем нет.


просто, проблема в том, чтобы мне надо отследить каждую редактируемую область и записать её в переменную php для дальнейших операций.
грубо говоря, просто живые таблицы с отслеживанием переменных.

я не могу отследить значение каждого поля

Krio 06.01.2015 14:30

извиняюсь, вот:

<table align="center" cellpadding="15" width="700" height="400">
<tr>
<td>Количество детей:</td><td id="editable"></td><td>	<input type="text" name="field2" value="'.$field2.'"  />	</td> 
</tr>

<tr>
<td>Количество сирот:</td><td>	<input type="text" name="field3" value="'.$field3.'" />		</td><td>	<input type="text" name="field4" value="'.$field4.'" />		</td>
</tr>

<tr>
<td>Прочие льготные квоты:</td><td>		<input type="text" name="field5" value="'.$field5.'" />		</td><td>	<input type="text" name="field6" value="'.$field6.'" />		</td>
</tr>

<tr>
<td>Квартал:</td><td>	<input type="text" name="field7" value="'.$field7.'" />		</td><td>	<input type="text" name="field8" value="'.$field8.'" />		</td>
</tr>

</table>
<br><br>
	<center>
		<input type="submit" name="ready" id="ready" /></center>


до этого работал с переменными php напрямую через инпуты, сейчас возникла задача в нарисовании красивых редактируемых полей

спасибо за отклик!

Krio 06.01.2015 18:44

нет, не заполнены

изначально они пустые, а я использовал костыльный метод - всю таблицу в переменную php вгонял, к примеру

$r = ' <...> ' ;

оттуда и названия переменных fields

а мне бы отследить передаваемые значения из переменных инпутов, а я не знаю как, т.к. передаваемые значения мне неизвестны.

кстати, извините, забыл упомянуть, работает с динамическим инпутом лишь первая ячейка

<td>Количество детей:</td><td id="editable"></td>


мне кажется, нужно добавить инкрементируемое значение в name, чтобы можно было хоть как-то отслеживать, но сделать этого я не смог

ну, и на этой же форме было бы хорошо делать запись из js переменных в переменные php, так как знаний js не хватает :(

Krio 06.01.2015 18:46

вот и проблема в том, я не могу отследить названия инпутов

просто, я не знаю, как я смогу получить данные

если бы я имел представление, как получить имя каждого динамического инпута, я бы сделал оттуда же и запись в переменную

danik.js 06.01.2015 21:35

<table id="table">
    <tr>
        <td><input name="input[0][0]" /></td>
        <td><input name="input[0][1]" /></td>
    </tr>
    <tr>
        <td><input name="input[1][0]" /></td>
        <td><input name="input[1][1]" /></td>
    </tr>
</table>
<script>
    var table = document.getElementById('table');
    table.addEventListener('change', function(event) {
         var input = event.target;
         alert(input.name + '=' + input.value);
    });
</script>

danik.js 06.01.2015 21:40

Далее XHR'ом засылаешь на сервак для записи:

var request = new XMLHttpRequest();
request.open('POST', 'table.php');
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
request.send(input.name + '=' + input.value);


На сервер придет ассоциативный массив (вроде бы) $_POST['input'] - первый ключ - строка, второй - ячейка. Ключи могут быть не числовыми.

Krio 07.01.2015 12:17

спасибо огромное! сейчас приступлю к внедрению :)


Часовой пояс GMT +3, время: 04:29.