Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрыть/показать текст звездочками (*) (https://javascript.ru/forum/misc/57618-skryt-pokazat-tekst-zvezdochkami-%2A.html)

javaQest 12.08.2015 15:28

RGBPlus,
Вы здесь, на сайте попробуйте нажать кнопку "запустить", там все работает.

RGBPlus 12.08.2015 15:41

Интересует логика:

1) поле #txt он изначально должен показывать в виде ***
2) после нажатия на #btn он должен показать 123456
3) после еще одного нажатия на #btn он должен показать ***


Вот ваш скрипт, чуть чуть переписанный! Сейчас у него логика немного другая от требуемой.

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<p><span id="btn">Password</span> <span id="txt">123456</span><br></p>
<script>
	btn.onclick=function(){
		if(/\*+/.test(txt.innerHTML))  {txt.innerHTML="I am visible"; this.innerHTML="Password"; return}
		txt.innerHTML="***"; this.innerHTML="Password"
	}
</script>
</body>
</html>

рони 12.08.2015 16:01

textToggle смена текста и callback
 
RGBPlus,
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
  $.fn.textToggle = function(arr, fn) {
    return this.each(function() {
        $(this).click(function() {
            var c = 0;
            return function() {
                $(this).text(arr[c++ % arr.length]);
                fn && fn()
            }
        }());

    })
};
$(function(){
     $('p').textToggle(["***", "Мой текст"]);
$('.pole').textToggle(["показать", "скрыть звездочками"], function() {
    $('p').click()
}).click();
});
  </script>
</head>

<body>
<div>
    <p>Мой текст</p>
    <span class="pole">скрыть звездочками</span>
</div>
</body>
</html>

javaQest 12.08.2015 16:07

Да, логика, она такая логичная
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<p><span id="btn">Password</span> <span id="txt">*****</span><br></p>
<script>
    btn.onclick=function(){
        if(/\*+/.test(txt.innerHTML))  {txt.innerHTML="12345678"; return}
        txt.innerHTML="*****";
    }
</script>
</body>
</html>


PS для запуска html run

рони 12.08.2015 16:13

:)
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<p><span id="btn">Password</span> <span id="txt">******</span><br></p>
<script>
    btn.onclick=function(){
        txt.innerHTML=["******","12345678"][+/\*+/.test(txt.innerHTML)]
    }
</script>
</body>
</html>

RGBPlus 12.08.2015 16:18

Цитата:

Сообщение от javaQest
Да, логика, она такая логичная

Я себя отвратительно чувствую, ибо похоже что не умею выражать свои мысли :(

То что вы написали/переписали, это я могу дописать. Ммммм ... в общем под логику вы подстроились, но задача не решилась!

Попробую объяснить еще раз, смотрите, будет к примеру:

<p><span id="btn">Password</span> <span id="txt">123456</span></p>
<p><span id="btn">Password</span> <span id="txt">456789</span></p>
<p><span id="btn">Password</span> <span id="txt">789456</span></p>


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

Скрипт написанный ksa выполняет мою задачу на 99% за исключением, что обратно в *** не скрывает данные (((

ksa 12.08.2015 16:23

Цитата:

Сообщение от RGBPlus
Скрипт написанный ksa выполняет мою задачу на 99% за исключением, что обратно в *** не скрывает данные

Добъем до 100%! :D

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://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>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
.button-pole {
	cursor: pointer;
}
</style>
<script type='text/javascript'>
$(function(){
	$('.pole').each(function(){
		var txt=this.innerHTML;
		$(this).data('text',txt);
		this.innerHTML='***'
	});
	$('.button-pole').click(function(){
		var o=$(this.parentNode).find('.pole');
		var txt=o.text();
		o.text(o.data('text'));
		o.data('text',txt);
		this.innerHTML=(this.innerHTML=='показать')? 'скрыть': 'показать';
	})
});
</script>
</head>
<body>
<div>
    <p>Мой текст <span class="pole">скрыть звездочками</span></p> <span class="button-pole">показать</span>
</div>
</body>
</html>

рони 12.08.2015 16:25

Цитата:

Сообщение от RGBPlus
id="btn"

Цитата:

Сообщение от RGBPlus
id="btn"

Цитата:

Сообщение от RGBPlus
id="btn"

:blink:

javaQest 12.08.2015 16:27

RGBPlus,
Доставайте элементы как нибудь по-другому, либо вешайте уникальный id на каждый элемент

RGBPlus 12.08.2015 16:33

Цитата:

Сообщение от javaQest (Сообщение 383911)
RGBPlus,
Доставайте элементы как нибудь по-другому, либо вешайте уникальный id на каждый элемент

Тоже к этому пришел, а то получается полная каша!
----

Добъем до 100%!? :D

Слассы .button-pole и .pole буду увеличивать на 1 при каждом использовании, можно скрипт ниже подстроить, что бы он смотрел и разделял .button-pole(+1) и .pole(+1)

Надеюсь понятно выразился, ниже в HTML думаю наглядно
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="http://code.jquery.com/jquery-latest.js"></script>
	<script type='text/javascript'>
	$(function(){
		$('.pole').each(function(){
			var txt=this.innerHTML;
			$(this).data('text',txt);
			this.innerHTML='***'
		});
		$('.button-pole').click(function(){
			var o=$(this.parentNode).find('.pole');
			var txt=o.text();
			o.text(o.data('text'));
			o.data('text',txt);
			this.innerHTML=(this.innerHTML=='Password')? 'Password': 'Password';
		})
	});
	</script>
</head>
	<body>
		<p>
			<span class="button-pole">Password</span> <span class="pole">123456</span>
		</p>
		<p>
			<span class="button-pole1">Password</span> <span class="pole1">456789</span>
		</p>
		<p>
			<span class="button-pole2">Password</span> <span class="pole2">789123</span>
		</p>
	</body>
</html>


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