Vymazání obsahu po kliknutí do formuláře

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jay Gridley
Člen | 16
+
0
-

Zdravím pěkně,

reším následující situaci: Jednotlive input boxy ve formulari mam predvyplnene metodou setEmptyValue() a potreboval bych, aby kdyz uzivatel klikne do jednoho z input boxu, aby se prevyplneny text smazal a uzivatel mohl zadat svuj vstup bez nutnosti oznacovat predvyplneny text a mazat.

Jak nejlepe na to? Diky moc za rady!

Editoval Jay Gridley (4. 8. 2009 17:24)

Lopata
Člen | 139
+
0
-

O žádném „ryze Nette“ řešení nevím.

(Nevim, jestli používáš jQuery, proto nejjednodušeji, nejprimitivněji (nejprasáčtěji… :-P))

<script>
var input = document.getElementById('frmJmenoFormu-JmenoInputu');
input.onfocus = function()
{
	if (input.value == 'Hodnota z setEmptyValue()')
	{
		input.value = ''
	}
}
input.onblur = function()
{
	if (input.value == '')
	{
		input.value = 'Hodnota z setEmptyValue()';
	}
}
</script>

Není to ale moc ideální… :-P

jarks
Člen | 94
+
0
-

Placeholder: tady je to pořešeno.

Editoval jarks (4. 8. 2009 19:02)

PetrP
Člen | 587
+
0
-

Nejčistčí řešení je (když ještě není podporováno html5) dát tu hodnotu bokem, a nad input si ji napozicovat.

$form->addText('search','Hledat')->setHtmlId('search');
<div style='display:none;' id='search-placeholder'>zadejte hledanej text</div>
<script>
	var input = document.getElementById('search');
	var div = document.getElementById('search-placeholder');
	div.style.position = 'absolute';
	div.style.left = input.offsetLeft+'px';
	div.style.top = input.offsetTop+'px';
	div.onmousedown = function () {
		this.style.display = 'none';
		input.focus();
		setTimeout('input.select();',1); //IE6
	};
	input.onfocus = function () {
			div.style.display = 'none';
	};
	input.onblur = function () {
		if (this.value == '')
			div.style.display = 'block';
	};
	div.style.display = 'block';
</script>

Editoval PetrP (4. 8. 2009 19:12)