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

HTML+CSS+JavaScript

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

 

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

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

тема: Очистка поля
 
 автор: OLi   (23.02.2009 в 15:55)   письмо автору
 
 

Взял исходник с этого форума,
[code]<script language="JavaScript">

function clear(form, fields)
{
form = document.forms[form];
for (var i=0; i<fields.length; i++) form[fields[i]].value = ""; }
</script>

Ссылка по нажатию котрой должна производиться очистка
<a href="#" onclick="clear(subform,text)">Очистить</a>
Поле имеет имя text!!![/code]


Не работает, что не так?

  Ответить  
 
 автор: PAT   (23.02.2009 в 17:59)   письмо автору
 
   для: OLi   (23.02.2009 в 15:55)
 

Попробуйте на будущее взять за принцип не давать объектам страницы (да и просто переменным) имена, которые УЖЕ ИМЕЮТСЯ в документе в виде имен тегов, наименований атрибутов и свойств (типа form, text и прочее).
Это - во-первых.

А во-вторых весьма странно видеть функцию, коя "очищает" value НЕСКОЛЬКИХ штук элементов формы, имеющих одно и то же имя text. Да, вполне бывает, что среди элементов формы имеются несколько элементов с одинаковым NAME. Но обычно это чекбоксы или радиоинпуты.
Еще более странно видеть, что в цикле верхним ограничением стоит длина массива таковых элементов (с одним именем). Если вдруг таковой массив внутри формы и существует, то его необходимо сформировать - автоматически такой коллекции среди встроенных в DOM объектов не существует.

В-третьих, нельзя забывать о том, что при клике по ссылке происходит переход на указанный в HREF ссылки адрес. Если ссылка у вас предназначена для иного, то переход необходимо отменить.


В общем, держите НОРМАЛЬНУЮ функцию, коя при вызове её может сработать в ДВУХ разных вариантах:
Вариант 1 - при вызове функции передается только имя формы и функция у ВСЕХ элементов формы очищает значение value.

Вариает 2 - при вызове функции передается не только имя формы, но и (через запятую) имена ТОЛЬКО тех элементов, кои надо очистить. И функция очищает value только указанных элементов.
<script>
function myFunc ()
{
for (var ar = arguments, el = document.forms [ar [0]].elements, j = 0; j < el.length; j++)
if (ar.length > 1) {for (var i = 1; i < ar.length; i++) if (el [j].name == ar [i]) el [j].value = ''}
else el [j].value = '';
return false;
}
</script>


<form name="myForm">
<input name="txt1" value="111">
<input name="txt2" value="222">
<input name="txt3" value="333">
<textarea name="txt4">444</textarea>
<input name="txt5" type="radio" checked value="555-1">
<input name="txt5" type="radio" value="555-2">
<input name="txt5" type="radio" value="555-3">
</form>

<a href="#" onclick="return myFunc ('myForm')">Очистить ВСЮ форму</a><br>
<a href="#" onclick="return myFunc ('myForm', 'txt1', 'txt4')">Очистить ТОЛЬКО первый инпут и текстареа</a>

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

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