Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Помощь в смене действий при OnClick (https://javascript.ru/forum/css-html/69046-pomoshh-v-smene-dejjstvijj-pri-onclick.html)

Noggan 26.05.2017 08:52

Помощь в смене действий при OnClick
 
Добрый день.
В JS полный ноль.
Нужна помощь в объяснении.
Делаю пригласительный на свою свадьбу, при нажатии на картинку, картинка должна пропасть и открыться форма ввода текста, после ввода определенного значения в форму, форма пропадает и выходит текст приветствия,т.е, если в форму ввести имя Александр, то форма пропадет и появится текст "Александр Мы приглашаем тебя....".
Понимаю что это задается условие, реализовал такое на Delphi RAD Studio 10.1, но в JS не соображу никак.
В Delphi скрыл форму ввода и текст, Click на картинку, картинка принимается visible: false, форма visible:true, после ввода имени в форму, форма принимает значение visible:false, а текст visible:true.
Просто проблема в том что я хочу отправить пригласительные через ВК, но там к сожалению невозможно нормально переслать exe, к тому же многие будут просматривать через телефон, поэтому решил реализовать посредством сайта.
Заранее прошу прощения за очень большое количество текста:)

ksa 26.05.2017 09:33

Цитата:

Сообщение от Noggan
В Delphi скрыл форму ввода и текст, Click на картинку, картинка принимается visible: false, форма visible:true, после ввода имени в форму, форма принимает значение visible:false, а текст visible:true.

Так же и в html + js... :yes:

Noggan 26.05.2017 10:08

<img src="images/first.png" id="welcome">
<input type="text" id="name" placeholder="Введите имя" style="display: none;">
<label style="display:none" id="done"></label>

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

ksa 26.05.2017 10:36

Цитата:

Сообщение от Noggan
не пойму как описать функцию чтобы поочередно они сменяли друг друга и как в label вытащить имя из text

Нечто такое...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		var o=$('#done');
		o.text($('#name').val());
		o.removeClass('off');
		return false;
	});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<label id="done" class='off'></label>
</body>
</html>

Dilettante_Pro 26.05.2017 10:58

ksa,
В хроме ваш пример молчит.
Поменяйте
<script src='http*!*s*/!*://code.jquery.com/jquery-latest.js'></script>

ksa 26.05.2017 11:25

Цитата:

Сообщение от Dilettante_Pro
Поменяйте

Этот скрипт может лежать где угодно, это не суть важно. :D

Dilettante_Pro 26.05.2017 11:48

ksa,
В данном контексте это важно: я запускаю ваш пример - он молчит. Зачем тогда он исполняемый?

Noggan 26.05.2017 13:09

Цитата:

Сообщение от ksa (Сообщение 453479)
Нечто такое...

Спасибо за помощь, скрипт работаю, сижу разбираюсь как он работает.
Не подскажешь еще одно, свой текст, который должен выводится вместе с тем что пользователь введет, куда его в коде прописать.
По сути он должен быть между тэгами <label>, но в нем выводится только то, что пользователь написал в форме.

ksa 26.05.2017 13:24

Цитата:

Сообщение от Noggan
Не подскажешь еще одно, свой текст, который должен выводится вместе с тем что пользователь введет, куда его в коде прописать.

Х/з чего ты там наверстаешь...
Как брать, как вставлять я показал. А дизайн и исполнение придумывай сам. :)
Цитата:

Сообщение от Noggan
По сути он должен быть между тэгами <label>

Тег
<label></label>

Предназначен для работы вкупе с
<input />

Для оформления строковых кусков текста есть
<span></span>

ksa 26.05.2017 13:25

Цитата:

Сообщение от Dilettante_Pro
Зачем тогда он исполняемый?

Не обращай внимания... :D

Noggan 26.05.2017 13:47

Цитата:

Сообщение от ksa (Сообщение 453502)
Х/з чего ты там наверстаешь...
Как брать, как вставлять я показал. А дизайн и исполнение придумывай сам. :)

Тег
<label></label>

Предназначен для работы вкупе с
<input />

Для оформления строковых кусков текста есть
<span></span>

Я имел в виду такой кусок, на примере того же Delphi.
Label1.Caption:=(Edit1.Text + ' ! ' + #10 + 'Текст который нужно написать и выведется совместно с тем что вводил пользователь')
Сорри что мучаю, просто реально для меня js, как огромный лес.

ksa 26.05.2017 14:34

Цитата:

Сообщение от Noggan
реально для меня js, как огромный лес

В лесу валом возможностей. ;)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		$('#done span').text($('#name').val());
		$('#done').removeClass('off');
		return false;
	});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<p id="done" class='off'>Вот так надо, <span></span>!</p>
</body>
</html>

Noggan 26.05.2017 14:49

ksa,
Спасибо большое друг!

Noggan 09.06.2017 14:58

Цитата:

Сообщение от ksa (Сообщение 453511)
В лесу валом возможностей. ;)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		$('#done span').text($('#name').val());
		$('#done').removeClass('off');
		return false;
	});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<p id="done" class='off'>Вот так надо, <span></span>!</p>
</body>
</html>

Заранее извиняюсь перед многоуважаемым Ksa, что снова мучаю вопросом.
Как сделать, чтобы при вводе определенного значения, к примеру имя "Иван", в span вывелось "Товарищ".
Я так понимаю нужно будет задать переменную со значением "Товарищ", которую мы опишем в условии, что при вводе "Иван" выведется то что в задано в var, или же это можно показать в условии.
Пытаюсь описать так, но код не работает:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		$('#done span').text($('#name').val());
		if ($('#name').val()=='Ирина'|| $('#name').val()=='Илья')
		$('#done').removeClass('off');
		else {
		alert ('Возможно вы ошиблись при вводе и сделали опечатку!');
			return true;
		}
		else if{
			$(('#done span').text=='Товарищ');
			if ($('#name').val()=='Иван')
		}
		return false;
	});
	
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<p id="done" class='off'>Вот так надо, <span></span>!</p>
</body>
</html>

Но так не работает, не пойму почему, из-за множества условий или вероятнее всего я делаю большую ошибку.

ksa 09.06.2017 15:25

Цитата:

Сообщение от Noggan
Как сделать, чтобы при вводе определенного значения, к примеру имя "Иван", в span вывелось "Товарищ".

Ну ты, барин, задачки ставишь... (с) из к/ф "Формула любви" :D

Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		var val=$('#name').val();
		val=(val=='Иван')? 'Товарищ': val;
		$('#done span').text(val);
		$('#done').removeClass('off');
		return false;
	});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<p id="done" class='off'>Вот так надо, <span></span>!</p>
</body>
</html>

Noggan 09.06.2017 22:21

Цитата:

Сообщение от ksa (Сообщение 455058)
Ну ты, барин, задачки ставишь... (с) из к/ф "Формула любви" :D

Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.off {
	display: none;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#welcome').click(function(){
		$(this).addClass('off');
		$('#info').removeClass('off');
	});
	$('#info').submit(function(){
		$(this).addClass('off');
		var val=$('#name').val();
		val=(val=='Иван')? 'Товарищ': val;
		$('#done span').text(val);
		$('#done').removeClass('off');
		return false;
	});
});
</script>
</head>
<body>
<img src="https://javascript.ru/forum/images/smilies/smile.gif" id="welcome" />
<form class='off' id='info'>
	<input type="text" id="name" placeholder="Введите имя" />
</form>
<p id="done" class='off'>Вот так надо, <span></span>!</p>
</body>
</html>

Да код работает, но строчка проверки введенных имен, при которых выходит последнее if ($('#name').val()=='Ирина'|| $('#name').val()=='Илья') не принимает, точнее игнорирует.
То есть, определенные имена он меняет на другое значение , а другие имена пропускает для дальнейшего действия.

Noggan 10.06.2017 23:51

Усе, разобрался.
Ksa, красавец, спасибо за помощь.:thanks:
Снимаю шляпу.


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