Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Активная\Не активная кнопка (https://javascript.ru/forum/jquery/13437-aktivnaya%5Cne-aktivnaya-knopka.html)

InetBUG 28.11.2010 16:44

Активная\Не активная кнопка
 
Есть два элемента, куда вводится заголовок (input) и текст (textarea). Сначала они пусты, поэтому submit - disabled.

Нужно сделать так, чтобы когда эти !оба! поля были заполнены (т.е. не были пусты - имели хотя бы по одному символу), то disabled с submit убирался бы. Но если !хотя бы одно! из этих полей опять становится пустым (ну, т.е. пользователь стирает информацию в нём), то submit снова становится disabled.

Написал вот такое:

var title = $('input[name="title"]');
var content = $('textarea[name="content"]');
var submit = $('.editor :submit');
$('input[name="title"], textarea[name="content"]').keypress( function() {
	if (title.val()!='' && content.val()!='') { submit.removeAttr('disabled'); }
	if (title.val()=='' || content.val()=='') { submit.attr({disabled: 'disabled'}); }
});


Но этот код выполняет только первую часть: когда оба поля заполняются, disabled с submit снимается. А вот если очистить одно поля или даже оба, то disabled на submit не ставится. Что не так?

exec 28.11.2010 16:56

Проверяйте по keyup вместо keypress.

monolithed 28.11.2010 18:09

Как вариант, без использования disabled

<style>
.invalidate {color:red;}
.validate {color: green;}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<p>Введите корректные данные</p>
<form action="#">
      <input type="text" />
      <input type="submit" />
</form>
<div></div>
<script>
$("form").submit(function() {
    if (/\d+/.test($("input:first").val())) {
        $("div").text("Правильно...").addClass('validate').show();
        return true;
   }
   $("div").text("Неправильно: только цифры").removeClass('validate').addClass('invalidate').show().fadeOut(1000);
      return false;
   });
</script>

lamer 22.06.2012 05:12

Уважаемые пожалуйста покажите как этот скрипт будет выглядеть на JS, а не на JQ.
JQ вообще не понимаю.

Или такое затухание не возможно сделать на JS ?

Aetae 22.06.2012 05:44

Jq сделано на js, соответственно всё что сделано на jq - сделано на js.
Открываешь код jq и смотришь как там сделано fadeOut.

lamer 22.06.2012 06:31

Цитата:

Сообщение от Aetae (Сообщение 183211)
Jq сделано на js, соответственно всё что сделано на jq - сделано на js.
Открываешь код jq и смотришь как там сделано fadeOut.

Спасибо.
Открыл я линк http://code.jquery.com/jquery-latest.min.js
И fadeOut там такой:
fadeOut: {
      opacity: "hide"
    }


Или где смотреть то нужно :) ?

Aetae 22.06.2012 06:46

Ну во-первых: http://code.jquery.com/jquery-latest.js
Во вторых, надо разобрать весь код и выяснить зависимости, что куда идёт и что делает.

Или же просто погуглить, ключевые слова "javascript fade in out".
В любом случае, если понимаете, что такой вопрос мог задаваться до вас(Чтобы это понять надо лишь слегка пораскинуть мозгами.) - используйте гугл. В принципе даже если думаете что ваш вопрос точно уникален - всё равно попробуйте погуглить, ибо всё равно остаётся шанс.
Спрашивать же такие банальности на форумах моветон. Да и ответчать на такие вопросы - скука, а потому ответа вы можете недождаться вообще.

devote 22.06.2012 07:53

lamer,
http://learn.javascript.ru/animation

lamer 23.06.2012 12:20

Нашел вариант но с рисунком, с текстом такое же не получается:
<div id="imgId">Test</div>

Подскажите плиз как переделать под текст ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Анимация: Fade Id - Fade Out</title>
	<script type="text/javascript">
	//<![CDATA[
var fade = { // Namespace
	ids	: {},
	step	: 0.05,
	delay	: 20, // ms
	timer	: null,
	setOpacity : function(elem, nOpacity) {
		if (typeof elem == 'string') elem = document.getElementById(elem);
		var props = ['MozOpacity', 'KhtmlOpacity', 'opacity'];
		for (var i in props) {
			if (typeof elem.style[props[i]] == 'string') {
				elem.style[props[i]] = nOpacity;
				return;
			}
		}
		// IE 6+
		try {
			nOpacity = 100 * parseFloat(nOpacity);
			if ((oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha)) oAlpha.opacity = nOpacity;
			else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+");";
		} catch (e) {
			// IE <= 5.5 OR Opera < 9 OR another browser. Do nothing
		}
	},
	_out : function(id, from, to, callback) {
		from -= this.step;
		from = from <= to ? to : from;
		if (this.doit(id, from, to, callback)) 
			this.timer = setTimeout("fade._out('"+id+"', "+from+", "+to+", '"+(callback ? callback : '')+"')", this.delay);
	},
	_in : function(id, from, to, callback) {
		from += this.step;
		from = from >= to ? to : from;
		if (this.doit(id, from, to, callback)) 
			this.timer = setTimeout("fade._in('"+id+"', "+from+", "+to+", '"+(callback ? callback : '')+"')", this.delay);
	},
	doit : function(id, from, to, callback) {
		this.setOpacity(id, from);
		clearTimeout(this.timer);
		if (from == to) {
			if (callback) eval(callback+'()');
		} else return true;
	}
}
	// Колбэки
	function stopHide() {//Вернуть лого фасткодера
	var button_in = document.getElementById('button_in');
		button_in.onclick = function() {
			fade._in('imgId', 0, 1, 'showHide');
		}
	}
	function showHide() {//Вернуть лого фасткодера
	var button_out = document.getElementById('button_out');
		button_out.onclick = function() {
			fade._out('imgId', 1, 0, 'stopHide');
		}
	}
	//]]>
	</script>
</head>
<body>	
	<h2>Нажмите на кнопку</h2>
	<p><img id="imgId" src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/JavaScript-logo.png/200px-JavaScript-logo.png" width="134" height="68" alt="" /></p>	
	<p><input id="button_out" type="button" value="Убрать лого фасткодера" onclick="fade._out('imgId', 1, 0, 'stopHide');" /></p>
	<p><input id="button_in" type="button" value="Вернуть лого фасткодера" onclick="fade._in('imgId', 0, 1, 'showHide');" /></p>
</body>
</html>

Deff 23.06.2012 15:51

lamer,
http://javascript.ru/forum/css-html/...tml#post183413


Часовой пояс GMT +3, время: 10:34.