Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2008, 20:57
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

Проверка ввода логина и пароля
Конечно стыдно про такое спрашивать, ну ситуация вынуждает. Помогите плиз! Вот код:
<html>
</head>
<style>	
	#enter {	
		border:solid 1px white;
		width:140px;
		color:black;
	}
</style>
<script>
	function insertHTML() {
		var text = "";
		      text += '<p>Login<p>';
		      text += '<input type=\"text\" id=\"login\" size=\"7\" onchange=\"checkFields()\">';
		      text += '<p>Pass<p>';
		      text += '<input type=\"password\" size=\"7\" id=\"pass\" maxlength=\"10\" onchange=\"checkFields()\">'
		document.getElementById("createdBox").innerHTML = text;

	}

	function checkFields() {
	       var enterLink = document.createElement("a");
	             enterLink.setAttribute("id", "enter");
	             enterLink.href="#";
	             enterLink.innerHTML = "Go!";
	             document.getElementById("createdBox").appendChild(enterLink);

		if(document.getElementById("login").value != "" && document.getElementById("pass").value != "") {
			document.getElementById("enter").style.display = "block";
		} else if(document.getElementById("login").value == "" || document.getElementById("pass").value == ""){
			document.getElementById("enter").style.display = "none";
		}
	}
window.onload=insertHTML
</script>
</head>
<body>
<div id="createdBox"></div>
</body>
</html>



В функции checkFields(), я проверяю текстовые поля на наличие в них текста, если в два поля введен текст то отображается кнопка(силка) методом display:BLOCK, а если в одном из них нету текста, то кнопка должна исчезнуть методом display:NONE;

Условие такое если (ОБА текстовых поля не пустые) {
тогда переменная enterLink принимает значение display = "block";
} иначе если(ОДИН из них пуст) {
тогда переменная enterLink принимает значение display ="none";
}

Так вот тут второе условие и не работает. ПОЧЕМУ?
Когда текст ввожу в оба поля кнопка отображается, а после удаления из какого-нибудь текстового поля содержимого, то кнопка не исчезает.

Подскажите, меня может глюкнуло и я не вижу ошибки, но сижу уже целый час.

Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2008, 21:46
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

потому что у вас множественно добавляется элемент enterLink
Вот так вот работает
function checkFields()
	{
	if(document.getElementById("enter")==undefined)
		{
		var enterLink = document.createElement("a");
		enterLink.setAttribute("id", "enter");
		enterLink.href="#";
		enterLink.innerHTML = "Go!";
		document.getElementById("createdBox").appendChild(enterLink);
		}
	if(document.getElementById("login").value != "" && document.getElementById("pass").value != "")
		{
		document.getElementById("enter").style.display = "block";
		}
	else if(document.getElementById("login").value == "" || document.getElementById("pass").value == "")
		{
		document.getElementById("enter").style.display = "none";
		}
	}

PS Совет:пользуйтесь фаербагом.
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2008, 23:58
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

Класс спасибо, скажите у вас большой опыт работы с JavaScript??? Мне очень хочется знать. Еше раз спасибо.

И еше, скажите, за что в даном случае отвечает свойство undefined? За то что в начале иде проверка наличия объекта enter или того что он сначала не существует или что?

У меня стоит фаербаг но я не знаю как им пользоваться подскажите что в нем основное надо знать и куда силатся подскажите что можете.
(P.S. Буду очень признателен!). Раскажите основные приколы. Я давно поставил но не думал что он так полезен!

И ЕШЕ РАЗ СПАСИБО!!!
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2008, 00:13
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Опыт работы на среднем уровне(именно так я щаз его оцениваю) у меня пару месяцев. до этого я писал на нем страшные вещи, не пользуясь примочками конкретно этого языка, по принципу "лиш бы работало хоть как-то"
Ф-ция document.getElementById() возвращает undefined, если объект не найден(в данном случае еще не создан).Таким образом мы делаем проверку на существование enterLink, и не плодим еще один такой же, если он уже был нами создан. если же нет, то создаем его).
как пользоватся фаерьагом на простейшем уровне, по моему есть в виде видео-урока, в разделе статьи. а вообще я с ним разобрался на уровне интуиции. попробуйте погуглить каку-нит ь справку по нему. больше ничего не могу посоветовать, т.к. полное описание его примочек, хотя б тех, с которыми я работаю, тянет на статью. а мне щаз лень, нет времени, etc.))
в данном случае на вкладке HTML, после каждого изменения полей вы бы увидели множащиеся enterLink, с разными style.display.
Правда я отловил ошибку и без него, так как логика скрипта четко отслеживается(на мой незамыленный взгляд)

PS Пожалуйста.

Последний раз редактировалось Gvozd, 17.06.2008 в 00:18.
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2008, 00:37
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

Благодарности
Все равно огромное спасибо! А на счет "до этого я писал на нем страшные вещи" цитаты Вы писали страшные вещи типа очень сложных функций и сложного прототипирования, или типа "сам не знаю что пишу"? Ну малость не въехал

Если хотите посмотрите как Вы мне помогли ну т.е. плод моего труда, и в частности Вашего. я выложу файл dynamicReg.txt а вы скажите, т.е. оцените понравилось или нет. Ну Вы можете подумать что я хвастаюсь, нет, не так, я не такой, мне просто интересны мнения разных людей по поводу моих "изделий". Я изучаю интернет психологию и мне интересно как лучше заинтересовать пользователя Напишите что не так и что можно исправить.
Очень приятно что нахожу людей себе подобных и нахожу с ними общий язык. ИХ ТУТ ТАК МНОГО НА САЙТЕ!!! Класс!!!

Жду ответа.
Вложения:
Тип файла: txt dynamicReg.txt (4.4 Кб, 18 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 17.06.2008, 01:20
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

типа "сам не знаю что пишу"))))
+ множественное повторение схожих функций для разных объектов, etc...
по поводу вашего скрипта:
во первых дивы butLeft и butRight вы бы хоть раскрасили. я сперва завытыкал в пустую страницу и не мог понять что от меня хотят. не шутите так в общем)
с точки зрения эстетики, формочка мне понравилась. хорошо смотрится, и не броско.
по поводу кода:
timerID = setTimeout("moveIn()", 1);
				if(start >= 0) {
					clearTimeout(timerID);
				}

к моменту перехода к внутренему блока условия, таймаут уже сработает, и не нуждается в очистке. но это мелкая придирка.
if(start <= 2 && start >= -365) {

заместо - 365 стоит задать реальный размер двигаемого блока, т.к. в разных браузерах, при разных настройках, цифра может и отличатся. но это отже не критично. в принципе больше ничего такого не вижу.
Кстати, а в каком месте тут моя помощ? не могу вспомнить.
Ответить с цитированием
  #7 (permalink)  
Старый 17.06.2008, 13:40
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

Спасибо за замечания! Исправим! А вот еше можете посмотреть. И скажите имеет ли смысл такие приколы использовать на сайтах? Например как на Рамблере?
(P.S. если можно побольше замечаний);
Этот скрипт не зависит от кода в HTML. Т.е. включил и забыл.
Изображения:
Тип файла: jpg for div.jpg (13.2 Кб, 20 просмотров)
Вложения:
Тип файла: txt Login&Pass.txt (3.8 Кб, 42 просмотров)
Ответить с цитированием
  #8 (permalink)  
Старый 17.06.2008, 13:43
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

А по поводу прошлого скрипта там просто кнопки картинки и задний фон тоже поэтому так плохо вышло. (P.S. вообще я случайно перепутал файлы)
Ответить с цитированием
  #9 (permalink)  
Старый 17.06.2008, 18:13
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Макс,
Такие элементы интерфейса можно, а часто и нужно использовать.
Особо хвалить ваши скрипты не буду (всё-таки примитивная задача), но подход у вас, в целом, правильный
Ответить с цитированием
  #10 (permalink)  
Старый 17.06.2008, 18:42
Аватар для Макс
Аспирант
Отправить личное сообщение для Макс Посмотреть профиль Найти все сообщения от Макс
 
Регистрация: 13.06.2008
Сообщений: 48

Спасибо! Но я не ставлю себе за задачу строить грандиозные проекты (чесно говоря, я даже не знаю что серьезного можно сделать на JS, да и вообще применение JS я могу наблюдать только в плане интерфейса страницы и все. ОДНО СЛОВО JS - это сторона клиента, а клиент - это потенциальный хакер, и этим все сказано).

Еше раз спасибо за помощь и критику они мне помогают.

Еще напишу!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ввода в форму greatilya Общие вопросы Javascript 8 23.09.2008 14:11
Прошу помочь с проверкой формы ввода Гость Общие вопросы Javascript 2 08.03.2008 12:10