|
|
|
| Взял исходник с этого форума,
[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]
Не работает, что не так? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|