ошибка в setAttributeNode(id);
Вот посмотрите код:
window.onload = function() {
document.getElementById('in').onfocus = form;
}
function form() {
var login = document.getElementById('log').value;
var pass = document.getElementById('pass').value;
if(login == "" && pass == "") {
// Создаем блок тэгов
var submit = document.getElementById('former');
// Получаем все тэги
var container = submit.getElementsByTagName('input');
// Создаем элемент input
var sub = document.createElement('input');
// Создаем атрибуты для элемента кнопки
var type = document.createAttribute('type');
var id = document.createAttribute('id');
// Создаем значение атрибутов
var dis = document.createAttribute('disabled');
var subval = document.createTextNode('submit');
var forDis = document.createTextNode('disabled');
var forid = document.createTextNode('in');
// Присваиваем атрибутам значения
dis.nodeValue = forDis;
id.nodeValue = forid;
type.nodeValue = subval;
// Присваиваем нашему конечному тэгу все атрибуты
sub.setAttributeNode(id).setAttributeNode(dis);
// Заменяем старую кнопку новой
submit.replaceChild(sub,container.item(2));
return false;
}
}
А вот формочка с которой я работаю:
<form action="authPW&LOG.php" method="POST" id="former" name="form" style="margin-top:5px;">
<label>Email или логи</label><br>
<input type="text" name="log" id="log" class="forms"><br>
<label>Пароль</label><br>
<input type="password" name="pass" id="pass" class="forms"><br>
<input type="submit" class="sub" name="in" id="in" value="Войти">
</form>
подскажите, в чем проблема, просто я хотел сделать так, что бы если в полях значения не введены, то кнопка не работала, заранее спасибо. (Новичок в JavaScript)
Спустя 8 минут, 49 секунд (14.01.2011 - 23:21) Dron19 написал(а):
Жду Ваших ответов... Спасибо заранее
Спустя 15 минут, 43 секунды (14.01.2011 - 23:37) kirik написал(а):
всё немного проще
<form action="authPW&LOG.php" method="POST" id="former" name="form" style="margin-top:5px;">
<label>Email или логи</label><br>
<input type="text" name="log" id="log" class="forms" onkeyup="myFn()" onchange="myFn()"><br>
<label>Пароль</label><br>
<input type="password" name="pass" id="pass" class="forms" onkeyup="myFn()" onchange="myFn()"><br>
<input type="submit" class="sub" name="in" id="in" value="Войти" disabled="disabled">
</form>
<script>
function ge(id) {
return document.getElementById(id);
}
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
</script>
Спустя 14 минут, 41 секунда (14.01.2011 - 23:52) Dron19 написал(а):
+ тебе, работает, теперь осталось вникнуть в твой код =) Спасибо
Спустя 56 секунд (14.01.2011 - 23:53) Dron19 написал(а):
onkeyup срабатывает когда нажимаешь на кнопку, первый щелчок?
Спустя 2 минуты, 46 секунд (14.01.2011 - 23:55) Dron19 написал(а):
что-то не совсем пойму эту функцию
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
Спустя 42 секунды (14.01.2011 - 23:56) Dron19 написал(а):
что это означает?
именно disabled как ты так приписываешь к функции, не могу понять, объясни пожалуйста
ge('in').disabled
именно disabled как ты так приписываешь к функции, не могу понять, объясни пожалуйста
Спустя 1 минута, 10 секунд (14.01.2011 - 23:57) Dron19 написал(а):
заранее спасибо
Спустя 5 минут, 11 секунд (15.01.2011 - 00:03) Dron19 написал(а):
добавил этот скрипт в главный js файл вот таким образом
и теперь не пропускает никогда, почему?
window.onload = function() {
document.getElementById('in').onkeyup = ge;
document.getElementById('in').onchange = myFn;
}
function ge(id) {
return document.getElementById(id);
}
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
и теперь не пропускает никогда, почему?
Спустя 1 минута, 26 секунд (15.01.2011 - 00:04) Dron19 написал(а):
в javascript я ночивек
Спустя 52 секунды (15.01.2011 - 00:05) Dron19 написал(а):
так все же, скажите пожалуйста, почему у меня перестал правильно работать Ваш и скрипт и можете если не сложно объяснить эту запись
Заранее благодарю
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
Заранее благодарю
Спустя 1 час, 15 минут, 28 секунд (15.01.2011 - 01:20) kirik написал(а):
Цитата (Dron19 @ 14.01.2011 - 15:53) |
onkeyup срабатывает когда нажимаешь на кнопку, первый щелчок? |
онкейап срабатывает после того, как ты отпустил кнопку (на клавиатуре).
Цитата (Dron19 @ 14.01.2011 - 15:56) |
именно disabled как ты так приписываешь к функции, не могу понять, объясни пожалуйста |
Это тоже самое, что и
document.getElementById(id).disabled
просто вспомогательная функция ge используется для уменьшения количества кода
Цитата (Dron19 @ 14.01.2011 - 16:03) |
и теперь не пропускает никогда, почему? |
потому что код не верный. Там и onchange и onkeyup вызывают одну и туже функцию
Цитата (Dron19 @ 14.01.2011 - 16:05) |
можете если не сложно объяснить эту запись |
вот развернутый вариант без использования вспомогательной функции и без применения тернарного оператора
function myFn() {
if(document.getElementById('log').value == '' || document.getElementById('pass').value == '') {
document.getElementById('in').disabled = true;
} else {
document.getElementById('in').disabled = false;
}
}
Спустя 10 часов, 27 минут, 15 секунд (15.01.2011 - 11:48) Dron19 написал(а):
тьфу, я даже не узнал тернарный оператор, спасибо
Спустя 3 минуты, 24 секунды (15.01.2011 - 11:51) Dron19 написал(а):
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
disabled - это же атрибут, ему нужно дать такое же значение, то есть
disabled="disabled" и тогда сработает, а если вы просто указываете дисаблед, то что будет? Можете написать html код который в итоге должен получиться?
Спустя 30 минут, 13 секунд (15.01.2011 - 12:21) kirik написал(а):
Цитата (Dron19 @ 15.01.2011 - 03:48) |
я даже не узнал тернарный оператор, спасибо |
А это не тернарный оператор


Цитата (Dron19 @ 15.01.2011 - 03:51) |
disabled - это же атрибут, ему нужно дать такое же значение, то есть disabled="disabled" и тогда сработает, а если вы просто указываете дисаблед, то что будет? Можете написать html код который в итоге должен получиться? |
Не понял.. Все же в постах выше есть..
Спустя 32 минуты, 4 секунды (15.01.2011 - 12:53) Dron19 написал(а):
ну вот например есть такой тэг
Если к нему прикрутить тако скрипт:
То браузер считает уже не так:
А так:
Так вот мне интересно, что браузер сделает с кнопкой после такого кода
<div id="testId">
<a href="test.php">Test php</a>
</div>
Если к нему прикрутить тако скрипт:
var test = getElementById('testId');
var allLinks = test.getElementsByTagName('a');
var link = allLinks.item(0);
test.insertBefore("Какой-то текст", link);
То браузер считает уже не так:
<div id="testId">
<a href="test.php">Test php</a>
</div>
А так:
<div id="testId">
Какой-то текст
<a href="test.php">Test php</a>
</div>
Так вот мне интересно, что браузер сделает с кнопкой после такого кода
function myFn() {
ge('in').disabled = (ge('log').value == '' || ge('pass').value == '');
}
Спустя 13 часов, 52 минуты, 9 секунд (16.01.2011 - 02:45) kirik написал(а):
Цитата (Dron19 @ 15.01.2011 - 04:53) |
То браузер считает уже не так |
Всмысле "не так"? Всё правильно он делает. Ты ему показываешь элемент (a) и говоришь вставить перед этим элементом текст.
Цитата (Dron19 @ 15.01.2011 - 04:53) |
Так вот мне интересно, что браузер сделает с кнопкой после такого кода |
Что написано, то и сделает

_____________
PHP+MySQL - уже изучил, осталось всего лишь это:
C,C++,C#,JavaScript,Python,Ruby,Perl,OpenGl,DirectX,ASP.NET - Намерен учить все