Ir para conteúdo

POWERED BY:

Arquivado

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

Igor Donin

focus()

Recommended Posts

Olá!

 

Qualquer ajuda será apreciada...

 

 

Bem...

 

Tenho o seguinte código:

 

document.form.NOME.focus();<form name="form"><input name="NOME" value="" type="text"><input name="NOME" value="" type="text"></form>
Na verdade, os inputs com name="NOME" são gerados dinamicamente... Pode ter 1, podem ter N...

 

Se tiver 1, não tem problema. O foco vai para o input normalmente. Mas se tiver mais de 1, dá um erro de script. Óbvio, o browser não consegue identificar para qual deles deve ir.

 

Eu pensei que quando tivesse mais de um input com o mesmo nome, o próprio browser os nomeasse

NOME

mas isso não acontece. Ou eu acho que não...

 

Bem... O que preciso é dizer dinamicamente para qual input o foco deve ir. Posso até fazer com que os nomes dos inputs sejam diferentes, como por exemplo: NOME_1, NOME_2 ...

 

Acontece que o document.form.NOME.focus(); teria que ser algo como

document.form.VARIAVEL.focus();

e isso não funciona... Bem, eu não sei como, pelo menos.

 

Tentei:

Ctrl = document.form. + VARIAVEL

Ctrl.focus();

 

e

 

Ctrl = "document.form." + VARIAVEL

Ctrl.focus();

 

 

Além disso, tentei o seguinte:

 

<input name="NOME" value="" type="text" onBlur="gotoFocus(this.name);">
... para tentar pegar o nome dinamicamente, mas não deu...

 

Mas não deu.

 

Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Qualquer ajuda será apreciada...

 

 

Bem...

 

Tenho o seguinte código:

 

document.form.NOME.focus();<form name="form"><input name="NOME" value="" type="text"><input name="NOME" value="" type="text"></form>
Na verdade, os inputs com name="NOME" são gerados dinamicamente... Pode ter 1, podem ter N...

 

Se tiver 1, não tem problema. O foco vai para o input normalmente. Mas se tiver mais de 1, dá um erro de script. Óbvio, o browser não consegue identificar para qual deles deve ir.

 

Eu pensei que quando tivesse mais de um input com o mesmo nome, o próprio browser os nomeasse

NOME

mas isso não acontece. Ou eu acho que não...

 

Bem... O que preciso é dizer dinamicamente para qual input o foco deve ir. Posso até fazer com que os nomes dos inputs sejam diferentes, como por exemplo: NOME_1, NOME_2 ...

 

Acontece que o document.form.NOME.focus(); teria que ser algo como

document.form.VARIAVEL.focus();

e isso não funciona... Bem, eu não sei como, pelo menos.

 

Tentei:

Ctrl = document.form. + VARIAVEL

Ctrl.focus();

 

e

 

Ctrl = "document.form." + VARIAVEL

Ctrl.focus();

 

 

Além disso, tentei o seguinte:

 

<input name="NOME" value="" type="text" onBlur="gotoFocus(this.name);">
... para tentar pegar o nome dinamicamente, mas não deu...

 

Mas não deu.

 

Alguma sugestão?

Sugeria-te o seguinte...

 

Quando crias as caixas provavelmente com uma linguagem server-side incrementa o ID e o NAME.

 

depois quando quiseres obter o id obtens do tipo

 

document.getElementById('text1').value;

 

ou

 

 

document.getElementById('text'+id).value;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, Rui...

 

mas acho que não entendi. :S

 

Não sou programador de formação, só me viro com o que preciso. E constantemente me vejo sem entender lhufas... Mas até estou familiarizado com o getElementById ... só não vejo como pode me ajudar.

 

Como vou dizer ao sistema que ele deve pegar o NOME_2 e não o NOME_1 para usar no

 

document.NOME_i.focus() ???

 

Nem eu sei qual devo usar! Depende da ação do usuário...

 

Entendeu?

 

Bem, vou postar o código para ver se ajuda.

 

function alteraValor(sid, valor, name, id) {	this.sid = sid;	this.valor = valor;	this.name = name; // adiciona posteriormente	this.id = id; // adicionado posteriormenteCtrl = document.orderOut.valor // aqui o problema...			exists = 0;		exists = (valor.indexOf('.') != -1) ? 1 : exists;		exists = (valor.indexOf('-') != -1) ? 1 : exists;					if ((valor == "") || (valor == 0) || (valor == "0") || (valor == "0,00")) {					validatePrompt(Ctrl, "Por favor, insira o valor a pagar.");				} else if (exists != 0) {					validatePrompt(Ctrl, " Os valores devem usar notação de moeda brasileira, com uma vírgula antes das \n duas casas decimais. Não deve ser usado o separador de milhares. \n\n Exemplo: 10000,00 (Dez mil Reais).");				}			parent.location.href = "ped_formas_pagamento_cad_do.asp?act=alt&sid=" + sid + "&v=" + valor}/* Foco e exibir mensagem de erro */function validatePrompt(Ctrl, PromptStr) {	alert (PromptStr);		if (Ctrl == "NO") {		return;	} else {		Ctrl.focus();		return;		} }

Você tem razão... estou usando ASP, como abaixo...

 

objRS.open SQL, objConn		if (objRS.eof) then%>			<tr>			  <td colspan="4" class="GreenTahoma11Bold">				<div align="center" style="padding: 2px 0px 2px 0px; ">Ainda não foi especificada a forma de pagamento. </div></td>			</tr><% 		else %>			<tr>			  <td class="BlackTahoma11"><div style="padding: 2px 0px 0px 2px; ">Forma de Pagamento</div></td>			  <td align="center" class="BlackTahoma11">Valor (R$) </td>			  <td class="BlackTahoma11"><div align="center">Troco Para (R$) </div></td>			  <td class="BlackTahoma11"> </td>			</tr>			<!--#include file="includes/color_switch_invert.inc"--><%			do until (objRS.eof)%>			<tr bgcolor="<%= color %>">			  <td width="160" class="BlackTahoma11">				<div style="padding: 2px 0px 2px 2px; "> <%= objRS("desc_forma_pagamento") %> </div></td>			  <td width="80"><div align="center">				  <input name="valor" id="valor" type="text" class="Input40" value="<%= fixMoney(objRS("valor")) %>" onBlur="alteraValor(<%= objRS("id") %>, this.value, this.name, this.id);">				  <!-- <input name="valor_< %= objRS("id") %>" id="valor_< %= objRS("id") %>" type="text" class="Input40" value="< %= fixMoney(objRS("valor")) %>" onBlur="alteraValor(< %= objRS("id") %>,this.value,this.id);"> -->			  </div></td>			  <td width="90"><div align="center">				  <input name="troco_para_<%= objRS("id") %>" id="troco_para_<%= objRS("id") %>" type="text" class="Input40" value="<%= fixMoney(objRS("troco_para")) %>" onBlur="alteraTroco(<%= objRS("id") %>,this.value,this.id);">			  </div></td>			  <td width="208">				<div align="right" style="padding: 2px 2px 0px 0px; "> 				  <a href="java script:void(0)"><img src="images/icon_v.jpg" alt="Alterar Forma de Pagamento" width="16" height="16" border="0"></a>				  <a href="ped_formas_pagamento_cad_do.asp?act=del&sid=<%= objRS("id") %>" target="_parent" ><img src="images/icon_x.jpg" alt="Excluir Forma de Pagamento" width="16" height="16" border="0"></a>				</div>			  </td>			</tr><%				objRS.movenext%><!--#include file="includes/color_switch_do.inc"--><%			loop		end if	objRS.close'====================================================================================%>		  </table>

Inclusive me dando conta de algo: esses campos não estão dentro de nenhum formulário... :/ hum... não tinha percebido isso antes. Será que influenciou??? (muito tempo na frente do computador... )

 

Bem, com isso em mente, vou tentar alterar algumas coisas no código e retorno...

 

Obrigado mesmo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui! Cara, fico impressionado com o poder do JavaScript!! Essa linguagem é demais!Usei a função que já estava usando alteraValores(sid, valor_inicial, novo_valor, element_id)Ctrl = document.getElementById(element_id);ValidatePrompt(Ctrl, mensagem) { etc etc Ctrl.focus();}chamo a função com (<%= objRS("id") %>, <%= objRS("valor") %>, this.value, this.id)a tag ficou <input type="text" id="valor_<%= objRS("id") %>">Voilá! Não precisei nem colocar dentro de um formulário!Valeu pela luz!Abraço!

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.