ExBB Community » » JavaScript » Вопросы по JavaScript

Страниц (7): « 1 2 [3] 4 5 6 7 »
 

31. yura3d - 9 июля 2009 — 15:17 - перейти к сообщению
Furax пишет:
Динамическое создание Flash-тегов с последующей загрузкой ролика, содержащего звук. Вероятность срабатывания, по-моему, будет выше, чем у других средств.

Если бы я ещё помнил, как эти флэш ролики составлять, давно с флэшем не работал. Огорчение А как насчёт варианта с тегом <embed>?
32. Furax - 10 июля 2009 — 05:19 - перейти к сообщению
Насколько я помню, ишак о нём ни слухом ни духом.
33. altjo - 10 июля 2009 — 11:04 - перейти к сообщению
вот есть какае-то JavaScript библиотека для проигрывания mp3, точно работает в основных браузерах...
34. yura3d - 10 июля 2009 — 13:48 - перейти к сообщению
altjo
Несколько библиотек уже пробовал, все они используют флеш
35. yura3d - 15 июля 2009 — 08:39 - перейти к сообщению
Сейчас столкнулся с такой проблемой. На странице имеется несколько форм, задача состоит в том, чтобы после нажатия кнопки (не сабмита) реализовать отправку данных каждой из форм по очереди (на Ajax). Сами формы получаю таким образом:
CODE:
var forms = document.getElementsByTagName('form');

Теперь вопрос, как получить доступ к значению какого-либо поля i-ой формы (forms[i]) ?
Наверное вопрос крайне нубский, но JS я знаю куда хуже PHP Огорчение
36. Furax - 15 июля 2009 — 08:45 - перейти к сообщению
CODE:
document.forms[i].elements[j]
, но при работе с формой, собранной "на лету" DOM-методами это не всегда работает.
37. yura3d - 15 июля 2009 — 08:51 - перейти к сообщению
Furax
Ясно, спасибо, буду разбираться Улыбка
38. yura3d - 15 июля 2009 — 12:34 - перейти к сообщению
Ещё такой вопрос. Имеется таблица, внутри которой располагается форма таким образом:
CODE:
<table>
<form>
<tr>
<td>Поле</td>
<td><input type="text"></td>
</tr>
</form>
<tr>
<td colspan="2"><input type="button" onClick="upload();"></td>
</tr>
</table>

Задача состоит в том, чтобы можно было динамически создавать внутри этой таблицы произвольное число форм, размещая их друг за другом. Какой существует наиболее простой и прозрачный способ реализации данной возможности?
39. Furax - 15 июля 2009 — 13:59 - перейти к сообщению
CODE:
<table id="formsTable">
<form id="lastForm">
<tr>
<td>Поле</td>
<td><input type="text"></td>
</tr>
</form>
<tr>
<td colspan="2"><input type="button" onClick="upload();"></td>
</tr>
</table><script type="text/javascript">
var formsTable = document.getElementsById('formsTable');
formsTable.lastForm = document.getElementById('lastForm');

function addForm()
{
var form = document.createElement('form');
var tr = document.createElement('tr');
form.appendChild(tr);
...

formsTable.lastForm = formsTable.insertBefore(form, formsTable.lastForm.nextSibling);
}
Не знаю, насколько это прозрачно, но я бы сделал так.
40. yura3d - 20 июля 2009 — 13:05 - перейти к сообщению
Furax пишет:
Не знаю, насколько это прозрачно, но я бы сделал так.

Что-то у меня так и не получилось сделать Огорчение Слёзы в глазах
Вот сама таблица с формой:
CODE:
<table width="100%" class="tableborder" cellpadding="0" cellspacing="1">
<tr>
<td class="maintitle" colspan="2"><img src="./templates/InvisionExBB/im/nav_m.gif" border="0" alt="&gt;" width="8" height="8" />&nbsp;{$fm->LANG['AdditionPhotos']}</td>
</tr>
<tr>
<td class="pformright" colspan="2">{$addition_desc}</td>
</tr>
<form id="photo_form" method="post" enctype="multipart/form-data">
<tr>
<td class="pformleft"><b>{$fm->LANG['PhotoTitle']}</b></td>
<td class="pformright"><input type="text" size="40" maxlength="255" /></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['PhotoDesc']}</b></td>
<td class="pformright"><input type="text" size="40" maxlength="255" /></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['PhotoLink']}</b></td>
<td class="pformright"><input type="text" size="40 maxlength="255" /></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['PhotoUpload']}</b></td>
<td class="pformright"><input type="file" size="30" /></td>
</tr>
</form>
<tr>
<td class="pformright" colspan="2" align="center"><a href="#" onClick="another_upload();">{$fm->LANG['AnotherUpload']}</a></td>
</tr>
<tr>
<td class="pformstrip" colspan="2" align="center"><input type="button" onClick="upload_photos();" value="{$fm->LANG['UploadPhotos']}"></td>
</tr>
</table>

Внутри form получается несколько tr, что делать в этом случае?
41. Furax - 20 июля 2009 — 13:48 - перейти к сообщению
Генерировать несколько trов соответственно. Радость
CODE:
var form = document.createElement('form');
var tr = document.createElement('tr');
form.appendChild(tr);
var tr2 = document.createElement('tr');
form.appendChild(tr2);
...
42. yura3d - 23 июля 2009 — 11:24 - перейти к сообщению
Furax
Всё равно так ничего и не получилось Огорчение
Оба браузера (IE6 и Opera 9.52) ругаются на строку:
CODE:
formsTable.lastForm = formsTable.insertBefore(form, formsTable.lastForm.nextSibling);

Возможно, перед nextSibling нужно не lastForm, а lastChild? Но в этом случае вставка происходит в самый конец таблицы, а не за предыдущей формой (перед кнопкой Отправить) Слёзы в глазах
43. Furax - 24 июля 2009 — 02:59 - перейти к сообщению
Так. Проблема была в том, что мы, как обычно, забыли про tbody, а между тем все строки - его "дети", а не tablа.

Однако есть ещё одна проблема. Стандарты W3C запрещают formе быть дочкой tbody (как для XHTML 1.0 Strict, так и для HTML 4.01 Transitional). Соответственно, браузеры пересчитывают этот "некорректный код" - смотри, например, вложенный рисунок, - это вывод Opera Dragonity для вот такого документа:
CODE:
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
<title>Формы в таблице</title>

<style type="text/css">
<!--

input
{
width: 100%;
}

//-->
</style>
<script type="text/javascript">
<!--

function addForm()
{
var form = document.createElement('form');
form.action = '';
form.method = 'post';

var tr = document.createElement('tr');
var th = document.createElement('th');
th.width = '50%';
th.appendChild(document.createTextNode('Имя любимого робота'));
var td = document.createElement('td');
td.width = '50%';
var input = document.createElement('input');
input.type = 'text';
input.name = 'robotName';

td.appendChild(input);
tr.appendChild(th);
tr.appendChild(td);
form.appendChild(tr);

tr = document.createElement('tr');
th = document.createElement('th');
th.width = '50%';
th.appendChild(document.createTextNode('Сколько лет Вы проспали за всю жизнь'));
td = document.createElement('td');
td.width = '50%';
input = document.createElement('input');
input.type = 'text';
input.name = 'sleepTotal';

td.appendChild(input);
tr.appendChild(th);
tr.appendChild(td);
form.appendChild(tr);

var lastTR = document.getElementById('buttonTR');
alert(lastTR.previousSibling.tagName);
lastTR.parentNode.insertBefore(form, lastTR);
}

//-->
</script>
</head>

<body>

<table width="100%" border="1">
<form action="" method="POST">
<tr>
<th width="50%">Имя</th>
<td width="50%"><input type="text" name="name"></td>
</tr>
<tr>
<th width="50%">Ник</th>
<td width="50%"><input type="text" name="nick"></td>
</tr>
</form>
<form action="" method="POST">
<tr>
<th width="50%">Вероисповедание</th>
<td width="50%"><input type="text" name="religion"></td>
</tr>
<tr>
<th width="50%">Объём тела, м<sup>3</sup></th>
<td width="50%"><input type="text" name="body"></td>
</tr>
</form>
<tr id="buttonTR">
<th colspan="2"><input type="button" value="Добавить ещё форму" onClick="addForm()"></th>
</tr>
</table>

</body>
</html>
Сам документ, кстати, работает, но из-за этой проблемы со стандартом - не так, как должен.
44. yura3d - 24 июля 2009 — 08:07 - перейти к сообщению
Furax пишет:
Однако есть ещё одна проблема. Стандарты W3C запрещают formе быть дочкой tbody (как для XHTML 1.0 Strict, так и для HTML 4.01 Transitional).

Каким образом тогда лучше сделать? Например, так (таблица с полями формы внутри самой формы):
CODE:
<form>
<table>
<tr>
<td>Поле: </td>
<td><input type="text"></td>
</tr>
</table>
</form>
?

В принципе не обязательно, чтобы было несколько форм, я на Ajax смогу реализовать частичную отправку одной формы, если это потребуется
45. Furax - 24 июля 2009 — 09:07 - перейти к сообщению
yura3d пишет:
таблица с полями формы внутри самой формы
Такой вариант мне лично нравится. Добавление полей можешь, в таком случае, взять из моего поста перед этим, с той разницей, что form создаваться не будет, а будет вызываться table.insertBefore для каждой строки отдельно.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0463]     [ ]