Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

olliver

script keyboard function bloqueia campos de input text...

Recommended Posts

Bom dia.

 

Estou usando esse script abaixo pra determinar uma ação pra algumas teclas (quando apertadas pelo visitante), isso está funcionando só que esse script "bloqueia" todos os input txt que tem no arquivo, ou seja, eles estão lá, clico neles pra digitar alguma coisa, mas não é possível digitar.

As únicas coisas que consigo digitar são as teclas que eu tbm defini no script abaixo (teclas 1 ao 8, mas ae ele digita e já executa a ação que determinei no script):

 

// Keyboard Background Function
	  function changeBackground(e){
		var carac = String.fromCharCode(e.which);

		if (carac == '1')
			changeStyle(0);
		else if (carac == '2')
			changeStyle(1);
		else if (carac == '3')
			changeStyle(2);
		else if (carac == '4')
			changeStyle(3);
		else if (carac == '5')
			changeStyle(4);
		else if (carac == '6')
			changeStyle(5);
		else if (carac == '7')
			changeStyle(6);
		else if (carac == '8')
			changeStyle(7);
		else
		return false;
	  }
	  document.captureEvents(Event.KEYPRESS);
	  document.onkeypress = changeBackground;

 

Alguém tem alguma idéia de como consertar isso?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em primeiro lugar tenho-lhe a dizer que mesmo que estivesse funfando bem no ie nao ia funfar pois o ie é diferente

 

para que serve isso?

document.captureEvents(Event.KEYPRESS);

e alem disso onde esta o codigo da funcao changeStyle()?

 

melhor postar o codigo completo e explicar o que quer fazer com o script

Compartilhar este post


Link para o post
Compartilhar em outros sites

é webmind, realmente ele não serve pra nada, tá duplicado. Faz a mesma coisa que a próxima linha faz. Valeu pelo toque.

 

Em relação ao script NÃO funcionar no IE, esse é um outro problema que notei, que ia falar mais pra frente com vcs. rsss

 

 

Seguinte, vou explicar os scripts completos, tem um PHPzinho no meio deles, que faz parte da idéia do site.

 

Aqui eu defino as imagens que serão utilizadas como background do site, e o estilo de cada uma (css):

<?php
	$backgrounds = array(
		'background1' => 'background-image: url(images/bg_1.jpg); background-repeat: no-repeat;',
		'background2' => 'background-image: url(images/bg_2.jpg); background-repeat: no-repeat;',
		'background3' => 'background-image: url(images/bg_3.jpg); background-repeat: no-repeat;',
	);

	// cria um array dos estilos
	$backgroundNames = array_keys($backgrounds);

	// pega a última imagem utilizada pelo visitante atual
	$backgroundId = isset($_COOKIE['backgroundId']) ? floor($_COOKIE['backgroundId']) : 0;

	// prepara o background
	$backgroundStyle = array();
	
	$backgroundScript = array();
	
	foreach ($backgrounds as $name => $styles) {
		$backgroundStyle[] = '#'.$name.' {'.$styles.'}';
		$backgroundScript[] = '\''.$name.'\'';
	}
?>

Aqui eu crio o esqueminha dos cookies, pra pegar a última imagem utilizada pelo visitante:

function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	  }

	  function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	  }

	  function eraseCookie(name) {
		createCookie(name,"",-1);
	  }

Com esse <script> eu defino a função de mudança das imagens (quando solicitada a mudança, seja por clique em link ou por tecla pressionada):

var styles = new Array(<?php echo implode(',', $backgroundScript); ?>);
	  function changeStyle(id){
		document.body.id = styles[id];
		createCookie('backgroundId', id, 30);
	  }

Pra que tudo isso funcione, eu defino um estilo no <body> do site e então os códigos acima mudam o estilo do body (de acordo com aqueles 3 estilos que defini com o php):

 

<BODY scroll="no" id="<?php echo $backgroundNames[$backgroundId]; ?>" >

Pra EXECUTAR os scripts acima, eu posso usar 2 opções, como segue abaixo.

1) através de um link chamando as funções através de um "onclick":

<a onclick="changeStyle(0)" style="cursor: pointer;">background 1</a>
<a onclick="changeStyle(1)" style="cursor: pointer;">background 2</a>

2) através de um KEYBOARD FUNCTION (enfim chegamos no meu problema, hehehe):

function changeBackground(e){
		var carac = String.fromCharCode(e.which);

		if (carac == '1')
			changeStyle(0);

		else if (carac == '2')
			changeStyle(1);

		else if (carac == '3')
			changeStyle(2);

		else
		return false;
	  }
	  document.onkeypress = changeBackground;

 

O que isso tudo faz?

Bom, o resultado é esse.

 

Veja só o formulário que coloquei, tente escrever alguma coisa nos campos, ele só aceita os números 1, 2, 3 (por causa do keyboard function).

 

PS: Se possível, teste no FIREFOX.

 

Abraços.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.