Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Не получается понять ошибку =(


Автор: BASILIO 6.6.2008, 22:53
Вот такой простенький кусок, смысл удаление первоначального значения, но так чтоб потом не удалялось всё если человек надумает исправить. Вот мой код:

Код

<INPUT type="text" name="frcy" value="City" onFocus='javascript:if(zyx != 1){this.value = ""; var zyx = 1;}'>

Автор: IDVsbruck 6.6.2008, 23:18
А ошибка какая?

- onfocus, а не onFocus
- в обработчике не дужна директива "javascript:"
- зачем сначала проверять переменную, а затем создавать новую в теле? - это разные переменные, вторая удаляется при выходе из обработчика, надо создать глобальную и убрать у внутренней var

Автор: BASILIO 6.6.2008, 23:31
Цитата(IDVsbruck @  6.6.2008,  23:18 Найти цитируемый пост)
- onfocus, а не onFocus

Если писать без IFа, проходит, не в этом проблема


Цитата(IDVsbruck @  6.6.2008,  23:18 Найти цитируемый пост)
- в обработчике не дужна директива "javascript:"

Странно, раньше не работало, могу правда с чем-нибудь путать, где можно глянуть конкретно данный пункт?



Цитата(IDVsbruck @  6.6.2008,  23:18 Найти цитируемый пост)
- зачем сначала проверять переменную, а затем создавать новую в теле? - это разные переменные, вторая удаляется при выходе из обработчика, надо создать глобальную и убрать у внутренней var 

1. А глобальную внутри неполучится создать?
2. Если нет, в каком отсеке должен быть скрипт создания в HEAD или BODY?
3. Её можно будет из обрабочика вызвать?



Спасибо

Автор: Ghirik 7.6.2008, 07:14
Цитата

Если писать без IFа, проходит, не в этом проблема


Собственно, Вам указали на onFocus, не для того чтобы прошло. А чтобы исключить возможное неправильное трактование интерпретатором этого атрибута. И чтобы в дальнейшем, не грешить на нарушение синтаксиса. JavaScript чуствителен к регистру символов.

Цитата

Странно, раньше не работало, могу правда с чем-нибудь путать, где можно глянуть конкретно данный пункт?


Когда Вы внутри тэга пишите onload, onclick, onfocus... и т.п., то это уже является JavaScript-ом. В HTML нет событий. Другое дело, например, параметр href тэга <a> и некоторых других. href - это чистый HTML, потому, если вы хотите запустить скрипт, то следует указать href:"javascript:....

Я бы зарисовал ваш случай так:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<title>Title block</title>
<script type="text/javascript">
<!--
var qwe = 0;
function init(obj) {
    if(qwe == 0) {
        obj.value = '';
        qwe = 1;
    }
}
//-->
</script>
</head>
<body>
<input type="text" name="frcy" value="City" onfocus="init(this)">
</body>
</html>


Названия тэгов, то же, следует писать маленькими буквами.


Автор: BASILIO 13.6.2008, 15:56
Цитата(Ghirik @  7.6.2008,  07:14 Найти цитируемый пост)
Я бы зарисовал ваш случай так:


А если инпутов много?

+

Можно этот скрипт писать в боди?

Автор: SelenIT 13.6.2008, 16:03
Цитата(BASILIO @  6.6.2008,  22:53 Найти цитируемый пост)
смысл удаление первоначального значения, но так чтоб потом не удалялось всё если человек надумает исправить

Проверяйте равенство value (текущее значение) и defaultValue (первоначальное значение). Удаляйте, только если они равны.

Автор: BASILIO 15.6.2008, 14:25
SelenIT, да тоже так решил сделать, в принцепе пофиг, если начальное равно тому что в итоге человеку нужно, впишит ещё раз =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)