Evento onTextChanged Ajax

giovedì 26 agosto 2010 - 14.55
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  Visual Studio Express

raptuz Profilo | Newbie

Salve a tutti, sto realizzando una form di inserimento in cui l'utente inserisce un valore in una textbox e in un'altra a fianco viene scritto il valore moltiplicato per un tasso di conversione che prendo da un database. Il mio problema è che vorrei che questo evento fosse scatenato ad ogni pressione di tasto e non solo quando perde il focus la textbox. Ho letto qualcosa che parla di ajax ma non ho idea di come si realizzi, potete darmi una mano?

Gluck74 Profilo | Guru

domandina: il tasso di conversione lo sai già, ovvero non dipende da quello che viene scritto nella textBox dall'utente????

carica il tasso di conversione dentro un campo hidden, poi da javascript fai la moltiplicazione inserendo una funzione client su onchange della textbox

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

raptuz Profilo | Newbie

no il tasso cambia da una selezione precedente, grazie dell'idea ora provo

raptuz Profilo | Newbie

allora con le prove che ho fatto l'evento onChange si verifica solo quando perde il fuoco su tag HTML <input> altrimenti su tag <asp:TextBox> l' evento non si genera.

Ti posto il codice così semmai puoi correggermi:

<script language="JavaScript" type="text/javascript">
function prendiValore(val) {
var qt = document.getElementById('qt');
alert(val);
var mix=val*qt.value;
alert(mix);
}
</script>

</head>
<body>
<form id="form1" runat="server">
Valore HTML<input type="text" name="valore" onchange="prendiValore(this.value)" runat=server> <br />
Valore Asp<asp:TextBox ID="txtval" runat=server onchange="prendiValore(this.value)"></asp:TextBox><br />
Tasso Di Conversione<asp:Label ID="qt" runat=server>4</asp:Label>
</form>

Gluck74 Profilo | Guru

Due correzioni:

prima di tutto il tasso conversione non puoi metterlo dentro un controllo asp, ma direttamente in un controllo HTML, altrimenti non puoi usare l'ID nella funzione javascript ma dovresti, da codice, andare a leggere il ClientID.
In pratica
<asp:Label ID="qt" runat=server>4</asp:Label>
, nella pagina html potrebbe diventare
<span id="ctl00_pnlCentro_qt">4</span>


seconda cosa la funzione che ti avevo suggerito non è quella giusta. Se vuoi far scatenare l'evento usa la onkeypress (trovi spiegazioni ed esempi su internet), però sempre con input HTML e non asp perché la funzione è lato client.

prova e dimmi se trovi complicazioni

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

raptuz Profilo | Newbie

allora ho provato e con solo codice html funziona, il problema è che il valore del tasso di conversione glielo devo dare tramite codice asp quindi non posso usare il tag <span> perchè non è possibile riempirlo da codice

Gluck74 Profilo | Guru

allora metti una label, però devi controllare l'ID che viene generato

Per tagliare corto puoi scriverlo direttamente nella funzione javascript, anche se non è la strada più corretta, ma è la più veloce.

fai la pagina con il tag asp, visuallizzala nel browser e poi guarda il codice HTML. Da qui vedi l'ID che viene assegnato al tag span generato.
Devi usare quello nella funzione javascript:

var qt = document.getElementById('......').InnerText;


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

raptuz Profilo | Newbie

perfetto ce l'ho fatta , grazie dell'aiuto!

posto la soluzione:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript" type="text/javascript">
function prendiValore(val) {
var qt = document.getElementById('qt');
var a=qt.firstChild;
var b=a.data
var mix = val * b;
alert(mix);
var Ris = document.getElementById('txtRis');
Ris.value = mix;
}
</script>

</head>
<body>
<form id="form1" runat="server">
Valore Asp<asp:TextBox ID="txtval" runat=server onkeyup="prendiValore(this.value)"></asp:TextBox><br />
Tasso Di Conversione<asp:Label runat=server ID="qt">4</asp:Label><br />
Risultato<asp:TextBox ID="txtRis" runat=server Enabled=false></asp:TextBox>
</form>
</body>
</html>
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5