IE не любит мой JS

12 3
P
На сайте с 25.05.2007
Offline
103
1287

Решил сделать название полей логина и пароля в самих полях. То есть, пока поле пустое, в первом пишется "логин", во втором - "пароль". При клике поля обнуляются, если после клика поле оставлено пустым, то в нем снова появляется его название. Если поле заполнено, то в нем остается значение. Сделал я это так:


<input type="text" name="login" value="Логин"
onfocus="this.value=this.value=='Логин'?'':this.value;"
onblur="this.value=this.value==''?'Логин':this.value;" />

<input type="text" name="pass" value="Пароль"
onfocus="this.value=this.value=='Пароль'?'':this.value;this.type='password';"
onblur="this.value=this.value==''?'Пароль':this.value;if(this.value=='Пароль')this.type='text';" />

C логином проблем нет, а вот поле пароля нормально работает только в FF.

В IE поле совсем не хочет менять тип на password ни по онфокусу, ни по онклику.

А в опере все почти работает, НО при первом клике на поле - символы заменяются звездочками, а вот при втором - поле очищается.

Т.к. сам в JS не очень, вопрошаю у общественности: что я сделал не так?

coolakov.ru/tools (http://coolakov.ru/tools/): определение конкурентов (http://coolakov.ru/tools/most_promoted/), кластеризация запросов (http://coolakov.ru/tools/razbivka/) и т.д.
frantic
На сайте с 09.02.2009
Offline
27
#1

да вроде все так. но ие похоже не понимает конструкцию this.type='password'.

и на jquery он ничего не понимает:


alert($(this).attr("type"));
$(this).attr({ "type": "password" });
alert($(this).attr("type"));

алерт 'text' а потом досвидания.

посмори вот это http://www.pengoworks.com/workshop/jquery/field/field.plugin.htm

там чуваки какой то плагин даже придумали :)

E2
На сайте с 15.12.2006
Offline
128
#2

Что-то тут всё в кучу, а нельзя как-то отдельным *.js файлом это сделать, с отступами и скобками?

Оно не от любви к искусству выравнивания текста, а исключительно от лени и стремления сократить число потенциальных ошибок )

Ап! И тигры у ног моих сели.
P
На сайте с 25.05.2007
Offline
103
#3

frantic, за ссылку спасибо конечно, но ставить jquery из-за такой ерунды глупенько как-то :) Да и потом, я считаю, нельзя ездить на автомобиле, не умея ездить на велосипеде. Так что пока JS нормально не освою, jquery не буду трогать.

error2k, вы, в принципе правы, но.. чесс говоря не оч знаю, как это в отдельниый .js вынести :)

frantic
На сайте с 09.02.2009
Offline
27
#4
pimandr:
Так что пока JS нормально не освою, jquery не буду трогать.

да у них почти ничего общего. пишу на jquery, там чисто js-овских строк процента 2, вот те же алерты для дебага :)

хотя конечно смотря что писать :)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#5
pimandr:
Так что пока JS нормально не освою, jquery не буду трогать.

а лучше сие г...но не трогать вовсе...

pimandr:
C логином проблем нет, а вот поле пароля нормально работает только в FF.

так и должно быть. Никто кроме лисы не умеет менять так DOM (ведь это алогично по сути...). Если честно, вы пытаетесь сделать задачку через ж... Что может быть проще, чем просто заменять поля одно другим, без такого напряга для DOM (если уж так лениво написать функцию имитирующую поле пассворд)

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
stifler_x
На сайте с 19.06.2008
Offline
193
#6
T.R.O.N:
а лучше сие г...но не трогать вовсе...

Пусть все трогают, а я эфекты буду писать с нуля. Верно?

Тогда зачем его придумали?

T.R.O.N
На сайте с 18.05.2004
Offline
314
#7
stifler_x:
а я эфекты буду писать с нуля

а разве за 2-3 года работы в JS Вы их еще не понаписывали???? Странно

stifler_x:
Тогда зачем его придумали?

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

Захотелось людям написать - написали. Кто-же против.

ixRock
На сайте с 14.11.2006
Offline
46
#8
T.R.O.N:
а лучше сие г...но не трогать вовсе...

маразм ибо.. я не столь ярый приверженец фреймворков, но чтобы так отзываться о jQuery я хз кем надо быть.. или гением или дураком ) или наверное по религиозным соображениям не приемлете джиквери?)

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

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
[Удален]
#9
pimandr:
Решил сделать название полей логина и пароля в самих полях. То есть, пока поле пустое, в первом пишется "логин", во втором - "пароль". При клике поля обнуляются, если после клика поле оставлено пустым, то в нем снова появляется его название. Если поле заполнено, то в нем остается значение. Сделал я это так:

не уверен в изначальной "правильности" самой идеи.

т.к. при отправке данных формы придется проверять заведомо не корректные данные, ибо поля заполнены - хоть и не правильными данными :)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#10
ixRock:
наверное по религиозным соображениям не приемлете джиквери

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

ixRock:
и да, раз уж поливаете грязью jQuery, хоть бы обосновали причины

не поливаю, а высказываю свое мнение (как и любой здесь на форуме), а причина банальна - что в нем есть такого, чего нет в запасниках любого мало-мальски опытного программера? Чем шаманить над чужим , лучше использовать собственное.

Возможно, такие штуки и можно юзать, если в проекте используется хотя-бы 50-70% из того, что в нем есть, а цеплять его, только для создания меню или для ajax запроса - маразм, но процветающий, ибо большинство из тех, на кого расчитаны такие фреймворки, понятия не имеют о том, как это за 30 сек сделать на JS без тонны ненужного кода

PS хотя странно, зачем обосновывать явное

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий