Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Подскажите как реализовать скрытие / показ текстового поля при нажатии на дивы? (https://javascript.ru/forum/dom-window/49935-podskazhite-kak-realizovat-skrytie-pokaz-tekstovogo-polya-pri-nazhatii-na-divy.html)

Webtest 04.09.2014 11:53

Подскажите как реализовать скрытие / показ текстового поля при нажатии на дивы?
 
Здравствуйте. Подскажите пожалуйста, есть такие коды:
<?php
	foreach ($scanTabs as $value) {
		if ($value != '.' && $value != '..') {
			echo '<textarea name="content" class="mainContent" id="' . $value . '">' . file_get_contents('Tabs' . DIRECTORY_SEPARATOR . $value) . '</textarea>';
		}
	}
	unset($value);
?>

И
<?php
	foreach ($scanTabs as $value) {
		if ($value != '.' && $value != '..') {
			echo '<div class="divTab" id="' . $value . '">' . $value . '</div>';
		}
	}
	unset($value);
?>

Текстовая форма скрыта в цсс фале через display: none. А как сделать так, чтобы при нажатии на див с именем и id = $value, то текстовая форма с таким же id показывалась?

krasovsky 04.09.2014 12:18

для начала ты ведь не хочешь действительно проставить один и тот же id двум элементам на странице - диву и текстарея ?

на jquery
<div id="div_<?php echo $value ?>">click me</div>
<textarea id="ta_<?php echo $value ?>"></textarea>

var id = <?php echo $value ?> ;//здесь этот твой value,если скрипт в шаблоне нет проблем, если в отдельном js фале - думай как передать туда
$('#div_'+id).click(function(){
    $('#ta_'+id).css({display:'block'});
})

Webtest 04.09.2014 12:33

krasovsky, действительно, что-то я не подумал об этом - на счет одинаковых айди.
Но вопрос, как передать значение $value в JS?
Дело в том, что значения $value разные, я могу туда добавить новых значений...

Webtest 04.09.2014 13:09

krasovsky, даже если делаю значение var id = тому что есть в $value, код все равно, почему-то, неработает.

Webtest 04.09.2014 13:12

Вот, я сделал так: но не работает.
[JS]<script type="text/javascript">
	<?php foreach ($scanTabs as $value) : ?>
		<?php if ($value != '.' && $value != '..') : ?>
			var id =<?php echo $value ?>;
			$('#div_'+id).click(function(){
			    $('#ta_'+id).css({display:'block'});
			})
	<?php endif; endforeach; ?>
</script>[/JS]

krasovsky 05.09.2014 07:30

Мне словосочетание "не работает" ничего не говорит. Что у тебя не работает?
Во первых смотри в консоли - нет ли ошибки js кода. Во вторых смотри в консоли на вкладке html после того как страничка загрузилась - вывелся ли вообще твой <?php echo $value ?>

Вот тебе пример даже. Как видишь без php - я преременную id определил в js'е. Все работает, тебе остается придумать как поределить id у себя.
http://jsfiddle.net/pncy7mdt/1/

Webtest 05.09.2014 11:21

krasovsky, вот код страницы в месте где не работает, делаю все так же, но не работает почему-то.
<textarea name="content" class="mainContent" id="ta_javascript.ru">Центральный Javascript...</textarea>

Вот кнопка:
<div class="divTab" id="div_javascript.ru">javascript.ru</div>

Вот код JS:
<script>
	var id = 'javascript.ru';
	$('#div_'+id).click(function(){
	   $('#ta_'+id).css({display:'block'});
	})
</script>

В шапку вставил:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

Вот цсс код для скрытия текстового блока:
textarea.mainContent {
    display: none;
}

Могу код страницы весь показать.

krasovsky 05.09.2014 14:56

Точка в селекторе? Смело. Я бы на такое не решился.
var id = 'javascript.ru';

Webtest 05.09.2014 21:39

krasovsky, не работает из-за точки в строчке javascript . этой? ru
Что не так-то, не пойму.

krasovsky 07.09.2014 00:14

Цитата:

Сообщение от Webtest
javascript . этой? ru

Нет из за другой.

А кроме шуток, сколько ты видишь тут точек? Я одну вижу, стало быть да, из за этой. А вообще не легче ли было просто убрать ее и попробовать чем писать этот, в который раз неуместный вопрос?
Цитата:

Сообщение от Webtest
Что не так-то, не пойму.

Что ты планируешь понять в js вообще если спрашиваешь каждую мелочь?


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