Ir para conteúdo

POWERED BY:

Arquivado

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

Ilano

O que há de errado nesta função?

Recommended Posts

Olá pessoal,

 

Estou tentando executar o seguinte java script:

 

<script language="javascript">

function ChecarValor()

{

var Parametro1=document.getElementById('LbQuestoes').value;

var Parametro2=document.getElementById('TxtAcertos').value;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))}

}

</script>

 

Dentro de um DataGrid, tenho um template (TextBox) e, neste, estou passando a função da seguinte maneira:

 

OnBlur="ChecarValor(This);"

Só q não está retornando nada! E, no console, não está retornando nenhum erro na função.

 

O q pode estar faltando????

 

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chamando a função assim:

 

OnBlur="ChecarValor();"

 

O console retorna:

 

document.getElementById('LbQuestoes').value; is null

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está passando um parâmetro para a função, mas ela não pede nenhum.

<script language="javascript">
function ChecarValor().....

OnBlur="ChecarValor(This);"

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função é assim:

 

<script language="javascript">

function ChecarValor()

{

var Parametro1=document.getElementById('LbQuestoes').value;

var Parametro2=document.getElementById('TxtAcertos').value;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))}

}

</script>

 

Ela deverá ser executada dentro do TextBox, como na figura:

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, naum achei erro no seu programa naum,

 

Olha só o q eu fiz para testar

<script type="text/javascript">

window.onload = function ()
{
	var Parametro1=10;
	var Parametro2=15;
	var pTotal=parseInt(Parametro1);
	var pValor=parseInt(Parametro2);
	
	if (pValor > pTotal )
	{
		alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))
	}
}

</script>

Ele retorna certinho, q provavelmente está acontecendo é que o conteúdo que está sendo preenchido no eu campo não está podendo ser transformado em inteiro com a função "parseInt"

 

Se por exemplo você estiver colocando valores no formato de moeda "1.222,00" você tem q tirar o "." e a "," para poder fazer operações envolvendo numero com o parseInt.

 

Confere aee e fala pra gente.

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

'LbQuestoes' é um layer ou um controle ?

 

segundo a imagem, aparentemente é um layer

 

para obter o valor chame o atributo innerHTML

 

exemplo

var Parametro1=document.getElementById('LbQuestoes').innerHTML;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desde já agradeço a atenção de todos!

 

Carutcho,

 

Dá certo, dessa forma como você postou, o problema está em passar os valores para as variáveis, isso é o q eu não estou conseguindo. Eu até troquei o Label (LbQuestoes) por um TextBox (TxtQuestoes) e ainda assim não está dando certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

'LbQuestoes' é um layer ou um controle ?

 

segundo a imagem, aparentemente é um layer

 

para obter o valor chame o atributo innerHTML

 

exemplo

var Parametro1=document.getElementById('LbQuestoes').innerHTML;

Ilano, Eu não consegui ver essa imagem, então esse ponto que o hinom tocou é importante.

 

Se as variáveis não estão em campos como input, como elas estão ? Estão em uma div ? se estiver em uma div, terá de pegar o valor dela assim como o hinom infrmou.

 

Faz o seguinte, poste o código HTML de onde estão esses campos que são as variáveis "LbQuestoes e TxtAcertos"

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função foi criada em um arquivo js e está sendo chamada a partir da uma MasterPage (MenuPrincipal.master).

 

function ChecarValor()

{

var Parametro1=document.getElementById('TxtQuestoes').Value;

var Parametro2=document.getElementById('TxtAcertos').Value;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{

alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))

}

}

Já tentei mudar para

 

function ChecarValor()

{

var Parametro1=document.getElementById('TxtQuestoes').innerHTML;

var Parametro2=document.getElementById('TxtAcertos').innerHTML;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{

alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))

}

}

 

Tb tentei fiz a seguinte mudança:

 

Troquei o Label (LbQuestoes) por um TextBox (TxtQuestoes) e ainda assim continua com problema.

 

O código HTML é este:

 

<%@ Page Language="VB" MasterPageFile="~/Vestibular/MenuPrincipal.master" AutoEventWireup="false" CodeFile="CadNotasFase1.aspx.vb" Inherits="Vestibular_CadNotasFase1" title="CONACC - LANÇAMENTO DE NOTAS DO VESTIBULAR" %>

<%@ Register Assembly="AspNetMaskedEdit" Namespace="AspNetMaskedEdit" TagPrefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<table border="0" cellpadding="0" cellspacing="0" width="100%" class="Tabelas">

<tr>

<td colspan="3" rowspan="3" valign="top">

<span style="font-size: 14pt">LANÇAMENTO DE NOTAS FASE 1</span></td>

</tr>

<tr>

</tr>

<tr>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 16px" valign="top">

</td>

</tr>

<tr>

<td colspan="3" rowspan="1" valign="top">

<table border="0" cellpadding="0" cellspacing="0" width="100%" class="Tabelas">

<tr>

<td style="width: 111px;" valign="top">

Ano:</td>

<td colspan="2" valign="top">

<cc1:maskededitaspnet id="TxtAno" runat="server"

mask="####-#" maxlength="6" width="81px" CssClass="CampoTexto"></cc1:maskededitaspnet></td>

</tr>

<tr>

<td style="width: 111px;" valign="top">

Tipo de Curso:</td>

<td colspan="2" valign="top">

<asp:DropDownList ID="DDLTipo" runat="server" AutoPostBack="True" DataTextField="Tipo_Nome"

DataValueField="Tipo_Codigo" Width="50%" CssClass="CampoTexto">

</asp:DropDownList></td>

</tr>

<tr>

<td style="width: 111px;" valign="top">

Nome do Curso:</td>

<td colspan="2" valign="top">

<asp:DropDownList ID="DDLCursos" runat="server" DataTextField="Cur_Nome"

DataValueField="Cur_Codigo" Width="95%" CssClass="CampoTexto">

</asp:DropDownList></td>

</tr>

<tr>

<td style="width: 111px" valign="top">

Matéria:</td>

<td colspan="2" valign="top">

<asp:DropDownList ID="DDLMaterias" runat="server" CssClass="CampoTexto" DataTextField="Mat_Nome"

DataValueField="Mat_Codigo" Width="95%">

</asp:DropDownList></td>

</tr>

<tr>

<td style="width: 111px" valign="top">

Nº de Questões:</td>

<td colspan="2" valign="top">

<asp:TextBox ID="TxtQuestoes" runat="server" CssClass="CampoTexto" Width="81px" Enabled="False"></asp:TextBox></td>

</tr>

</table>

</td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 16px" valign="top">

<asp:Label ID="LbMensagem" runat="server" ForeColor="Red"></asp:Label></td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 16px" valign="top">

<asp:ImageButton ID="BtnConsultar" runat="server" ImageUrl="~/Imagens/BtnConsultar.jpg" />

<asp:ImageButton ID="BtnSalvar" runat="server" ImageUrl="~/Imagens/BtnSalvar.jpg" Visible="False" /></td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="text-align: right" valign="top">

<asp:Label ID="LbTotal" runat="server" Text="000 REGISTROS"></asp:Label></td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 16px; text-align: right" valign="top">

</td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 16px" valign="top">

<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" CssClass="grid">

<AlternatingItemStyle CssClass="gridalternate" />

<HeaderStyle CssClass="gridheader" />

<Columns>

<asp:BoundColumn DataField="Cand_Codigo" HeaderText="CÓDIGO" Visible="False">

<HeaderStyle Width="0%" />

</asp:BoundColumn>

<asp:BoundColumn DataField="MATRICULA" HeaderText="MATRÍCULA">

<HeaderStyle Width="15%" />

</asp:BoundColumn>

<asp:BoundColumn DataField="Cand_Nome" HeaderText="NOME DO CANDIDATO">

<HeaderStyle Width="70%" />

</asp:BoundColumn>

<asp:TemplateColumn HeaderText="Nº ACERTOS">

<ItemTemplate>

<asp:TextBox ID="TxtAcertos" runat="server" onkeypress="return validaTecla(this, event)" OnBlur="ChecarValor(this);" CssClass="CampoTexto" Width="95%">0</asp:TextBox>

<asp:Label ID="LbCodCandidato" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Cand_Codigo") %>'

Visible="False"></asp:Label>

</ItemTemplate>

<HeaderStyle Width="15%" />

</asp:TemplateColumn>

</Columns>

</asp:DataGrid></td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 20px" valign="top">

</td>

</tr>

<tr>

<td colspan="3" rowspan="1" valign="top"><asp:ImageButton ID="BtnGravar" runat="server" ImageUrl="~/Imagens/BtnSalvar.jpg" Visible="False" /></td>

</tr>

<tr>

<td colspan="3" rowspan="1" style="height: 18px" valign="top">

</td>

</tr>

</table>

</asp:Content>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei qual eh o problema,

 

você trabalha com .NET, eu não entendo mt bem de .NET mas posso tentar te ajudar,eu sei qu ele roda no server side assim como php, java etc e traz uma resposta HTML certo ? O javascript ele roda no cliente, então aee está a parada.

 

quando você escreve

<asp:TextBox ID="TxtQuestoes" runat="server" CssClass="CampoTexto" Width="81px" Enabled="False"></asp:TextBox>

Esse código é interpretado pelo interpretador do .NET e retorna um código HTML , então para você saber exatamente qual campo deve pegar no seu javascript, você tem que rodar o seu programa e depois puxar o código fonte "HTML" no navegador pra gente poder ver saca ?

 

No chute esse codigo aee em cima deve retornar

 

<input type="text" id="TxtQuestoes" class="CampoTexto" disabled>

Então faz isso , roda aee puxa o código fonte e cola aee pra gente ver.

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

var Parametro1=document.getElementById('TxtQuestoes').innerHTML;

var Parametro2=document.getElementById('TxtAcertos').innerHTML;

não era pra fazer isso..

 

 

'TxtAcertos' é um controle e não um layer

 

no primeiro codigo que você postou, bastava trocar "em negrito" value por innerHTML

 

<script language="javascript">

function ChecarValor()

{

var Parametro1=document.getElementById('LbQuestoes').value;

var Parametro2=document.getElementById('TxtAcertos').value;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))}

}

</script>

 

obs: não é a solução. Apenas uma sugestão.

 

 

se estiver com dificuldade, basta debugar usando o "alert()"

 

exemplo

 

<script language="javascript">

function ChecarValor()

{

var Parametro1=document.getElementById('LbQuestoes').innerHTML;

alert( Parametro1 );

 

/* comente esse trecho pra evitar outros erros

var Parametro2=document.getElementById('TxtAcertos').value;

var pTotal=parseInt(Parametro1);

var pValor=parseInt(Parametro2);

 

if (pValor > pTotal )

{alert ("INFORME UM NÚMERO MENOR OU IGUAL A " + parseInt(Parametro1))}

}

*/

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

Bem, nenhum dos testes foram favoráveis. Tentei tudo o q postaram, mas nem mesmo o teste para ver se o parâmetro era nulo não deu certo. Então, fiz de uma outra forma em VB.

Após o usuário clicar no botão salvar, antes de enviar os dados para o banco, o sistema irá verificar quais campos são maiores q a quantidade de questões e irá destacar o(s) campo(s) de amarelo e emitir o aviso. Pelo menos dessa forma funcionou.

 

Mais uma vez agradeço a atenção de todos! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.