Problema con redirect javascript

venerdì 22 luglio 2011 - 09.56
Tag Elenco Tags  C#  |  .NET 2.0  |  Windows XP  |  Visual Studio 2005  |  SQL Server 2008 R2

muccio04 Profilo | Newbie

ciao a tutti,
ho un problema con un redirect Javascript , alla fine del post trovate tutta la pagina ma il codice che non riesco a capire è il codice n° 1:
generato dal codice n°2.
Il problema è il seguente: non riesco a fare fare il redirect alla pagina desiderata, mi sapreste indicare come mai?.
In Internet explorer funziona solo se NON è commentato la alert tra le 2 parentesi chiuse nel codice 1, in firefox proprio non funziona.
Grazie a tutti quelli che mi sapranno dare una mano.

codice n°2
<asp:TextBox ID="txtBoxRicercaHome" onkeydown="redirectArticoli();" BorderWidth="0" runat="server"></asp:TextBox>
<asp:LinkButton ID="lnkBtntxtBoxRicercaHome" runat="server" OnClick="lnkBtntxtBoxRicercaHome_Click">cerca</asp:LinkButton>


codice n°1
<script language="javascript">
function redirectArticoli()
{
alert('ciao prima, evento generato:' + event.keyCode );
if( event.keyCode == 13 )
{
//alert('evento keyCode = 13')
var elem = document.getElementById('txtBoxRicercaHome');
var pageRedirect = "visualizzaArticoli.aspx?ricerca=" + elem.value;
//window.location.href = pageRedirect;
self.location = pageRedirect;
}
alert('premuto codice: ' + event.keyCode);
}
</script>









<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>
<%@ Import Namespace="distrilan" %>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title>Distrilan Srl - Communication Technology - Materiale Telefonico, VoIp, Networking, Macchine Ufficio, Cablaggio Strutturato, Videosorveglianza</title>
<link rel="shortcut icon" href="public/immagini_azienda/favicon.ico"/>
<meta name="description" content="distrilan, il partner ideale per la communication technology"/>
<meta name="keywords" content="pbx voip, centrali digitali, cuffie a filo, cablaggio categoria 6, centrale nec, ripetitori microset, apparati di audioconferenza polycom, cuffie bluetooth, interfacce gsm"/>
<link href="css/stile.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/disabJS.js"></script>
<meta name="google-site-verification" content="VO11S27Gy7phM9Vnm3ZIlqi2rT2xOfaM_ZFsc4IKqrc" />
<!---analitycs-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-8967884-9']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!---fine analitycs-->
<script src="http://86138.hittail.com/mlt.js" type="text/javascript"></script>


<script language="javascript">
function redirectArticoli()
{
alert('ciao prima, evento generato:' + event.keyCode );
if( event.keyCode == 13 )
{
//alert('evento keyCode = 13')
var elem = document.getElementById('txtBoxRicercaHome');
var pageRedirect = "visualizzaArticoli.aspx?ricerca=" + elem.value;
//window.location.href = pageRedirect;
self.location = pageRedirect;
}
alert('premuto codice: ' + event.keyCode);
}
</script>


</head>
<%
//bool pagamento = distrilan.Utility.controllaPagamento();
//if (pagamento == false)
// return;
%>
<body>
<form runat="server" id="formHome">
<asp:ScriptManager ID="scriptMGR_Home" runat="server"></asp:ScriptManager>
<div id="contenitore">
<div id="header">
<a class="logoHeader" href="index.aspx"><img src="images/static/logo-distrilan.jpg" alt="logo distrilan" title="logo distrilan"/></a>
<div class="pulsantiera">
<a class="linkHome" href="#"><img src="images/static/pulsanteHome.jpg" border="0px"/></a>
<ul>
<li><a class="linkPulsantiera" href="index.aspx">HOME</a></li>
<li><a class="linkPulsantiera" href="azienda.aspx">AZIENDA</a></li>
<li><a class="linkPulsantiera" href="contatti.aspx">DOVE SIAMO</a></li>
<%
if (distrilan.SiteUser.IsLogged() == false)
{
%>
<li><a class="linkPulsantiera" href="registrati.aspx">REGISTRATI</a></li>
<%}
if (distrilan.SiteUser.IsLogged() == true)
{
%>
<li><asp:LinkButton ID="LinkButton1" runat="server" CssClass="linkPulsantiera" OnClick="log_out" Text="ESCI"></asp:LinkButton></li>
<%
}
try
{
//provo a prendere l'username, se ce lo ho significa che sono loggato e posso fare vedere se c'è il checkout articoli
String username = distrilan.SiteUser.getUser().Username;
if (distrilan.Carrello.LeggiCarrello().Rows.Count != 0)
{
%>
<li><a class="linkPulsantiera" style="color:Orange" href="checkOutCarrello.aspx">IL TUO CARRELLO</a></li>
<%
}
}
catch (Exception)
{ }
%>
</ul>
<div class="ricercaHome">
<%--<asp:TextBox ID="txtBoxRicercaHome" OnTextChanged="textChanged" BorderWidth="0" runat="server"></asp:TextBox>
<asp:LinkButton ID="lnkBtntxtBoxRicercaHome" runat="server" onblur="vuotaRicerca();" OnClick="lnkBtntxtBoxRicercaHome_Click">cerca</asp:LinkButton>--%>
<asp:TextBox ID="txtBoxRicercaHome" onkeydown="redirectArticoli();" BorderWidth="0" runat="server"></asp:TextBox>
<asp:LinkButton ID="lnkBtntxtBoxRicercaHome" runat="server" OnClick="lnkBtntxtBoxRicercaHome_Click">cerca</asp:LinkButton>
</div>
<!--fine della pulsantiera orizzontale in alto-->
</div>
<!--fine dello header-->
</div>

<div id="corpo">
<div id="navigazione">
<%
//se l'utente non è loggato allora facciamo vedere il box di login
if (distrilan.SiteUser.IsLogged() == false)
{
%>
<div class="areaRiservataHome">
<div class="headerAreaRiservata">&nbsp;LOG IN</div>
<asp:Label ID="lblLogin" runat="server" Text="username" CssClass="lblAreaRis"></asp:Label>
<asp:TextBox ID="txtBoxLogin" runat="server" CssClass="txtBoxAreaRis"></asp:TextBox><br />
<asp:Label ID="LblPwd" runat="server" Text="password" CssClass="lblAreaRis"></asp:Label>
<asp:TextBox ID="txtBoxPwd" runat="server" TextMode="Password" CssClass="txtBoxAreaRis"></asp:TextBox><br />
<asp:Button ID="btnLogin" runat="server" Text="Accedi" CssClass="btnLogin" OnClick="btnLogin_Click"/>
</div>
<%
}
%>
<!--qui sotto c'era la label dell'username loggato-->
<asp:Label ID="lblUsername" runat="server"></asp:Label>
<ul>
<li><a href="vendor.aspx">Marchi distribuiti</a></li>
<li><a href="privacy.aspx">Privacy</a></li>
<li><a href="condizioni_di_vendita.aspx">Condizioni di vendita</a></li>
<li><a href="promo.aspx">Promozioni</a></li>

<%
//se l'utente è loggato facciamo vedere i 6 tasti sotto
if(distrilan.SiteUser.IsLogged() == true)
{
%>
<li><a href="download.aspx">Download</a></li>
<%
}
%>
</ul>
<%
if (distrilan.SiteUser.IsLogged() == true)
{
%>
<asp:Panel ID="PanelPulsanti" CssClass="pnlPulsanti" runat="server">
<div class="boxPulsante"><img src="images/static/telefono.jpg"/><a href="articoli.aspx?filtroFamiglia=1">Telefonia</a></div>
<div class="boxPulsante"><img src="images/static/cabling.jpg"/><a href="articoli.aspx?filtroFamiglia=3">Cabling</a></div>
<div class="boxPulsante"><img src="images/static/multifunzione_panasonic.jpg"/><a href="articoli.aspx?filtroFamiglia=4">Office machines</a></div>
<div class="boxPulsante"><img src="images/static/networking.jpg"/><a href="articoli.aspx?filtroFamiglia=2">Networking</a></div>
<div class="boxPulsante"><img src="images/static/videosorveglianza.jpg"/><a href="articoli.aspx?filtroFamiglia=5">Video sorveglianza</a></div>
<div class="boxPulsante"><img src="images/static/servizi.jpg"/><a href="articoli.aspx?filtroFamiglia=9">Servizi</a></div>
<br />
</asp:Panel>
<%
}
%>

<!--pannello per la visualizzazione delle news nella home page-->
<asp:UpdatePanel ID="updPnlNewsHome" runat="server">
<ContentTemplate>
<asp:Panel ID="PnlNewsHome" CssClass="pnlNews" runat="server">
<asp:Label ID="lblHeaderNewsHome" CssClass="headerNewsHome" runat="server"></asp:Label>
<asp:Panel ID="PnlTitoloNewsHome" runat="server"/>
<asp:Panel ID="PnlCorpoNewsHome" runat="server"/>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>

<!--div contenitore sinistat-->
<div class="imgContatoreShynistat">
<!-- Begin Shinystat code -->
<script type="text/javascript" src="http://codice.shinystat.com/cgi-bin/getcod.cgi?USER=distrilan"></script>
<noscript>
<a href="http://www.shinystat.com" target="_top">
<img src="http://www.shinystat.com/cgi-bin/shinystat.cgi?USER=distrilan" alt="Free site counter" border="0" /></a>
</noscript>
<!-- End Shinystat code -->
</div>
<!--fine div contenitore sinistat-->

</div>
<!--fine del diw navigazione-->

<div id="contenuto">
<div class="headerContenuto"><div class="txtHeaderContenuto">in evidenza</div></div>

<div class="inEvidenza">
<asp:UpdatePanel ID="updPnlEvidenza" runat="server">
<ContentTemplate>
<asp:HiddenField ID="idInEvidenza" runat="server"/>
<asp:Timer ID="TimerPnlEvidenza" runat="server" Interval="8000" OnTick="timer_tick"/>
<%--<asp:Panel ID="pnlTitoloImgInEvidenza" runat="server"></asp:Panel>--%>
<asp:Label ID="pnlTitoloImgInEvidenza" runat="server"/>
<!--pareggiamento immagine in evidenza-->
<div style="clear:both; height:1px; overflow:hidden"></div>
<%--<asp:Panel ID="pnlTestoImgInEvidenza" runat="server"/>--%>
<asp:Label ID="pnlTestoImgInEvidenza" runat="server"/>
<asp:Panel id="pnlImgEvidenza" runat="server"/>
</ContentTemplate>
</asp:UpdatePanel>
</div>

<!--abbasso i 6 riquadri sotto cabling..office...-->
<div style="clear:both; height:25px; overflow:hidden"></div>

<asp:UpdatePanel ID="updPnlGridViewPromo" runat="server">
<ContentTemplate>

<%
//se l'utente non è loggato faccio vedere i mega box nella home page
if (distrilan.SiteUser.IsLogged() == false)
{
%>
<div class="contenitoreCategorieHome">
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Telephony solutions</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=1"><img src="images/static/telefono.jpg" alt="Telephony solutions" title="Telephony solutions"/></a></div>
<div class="testoBoxCategorieHome">bca, cordless, dect, ip, cuffie telefoniche, ups, interfacce gsm/umts, pbx, messaggi personalizzati, ripetitori di segnale, audioconferenza, risponditori, musiche su attesa, segreterie, interfacce citotelefoniche...</div>
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=1">Dettagli</a></div>
</div>
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Cabling</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=3"><img src="images/static/cabling.jpg" alt="Cabling" title="Cabling" /></a></div>
<div class="testoBoxCategorieHome">tutto quello che serve per la stesura e test dei cablaggi: armadi rack 19", strumenti di certifica, cablaggio strutturato cat.5, cat.6, cat.7, cat.7a, rg59, cavi coassiali, borse attrezzi</div>
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=3">Dettagli</a></div>
</div>
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Office machines</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=4"><img src="images/static/multifunzione_panasonic.jpg" alt="Office machines" title="Office machines" /></a></div>
<div class="testoBoxCategorieHome">fax, stampanti, multifunzione, laser, monocromatiche, toner, cartucce, tamburi, pellicole</div><br /><br />
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=4">Dettagli</a></div>
</div>
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Networking</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=2"><img src="images/static/networking.jpg" alt="Networking" title="Networking"/></a></div>
<div class="testoBoxCategorieHome">switch, router, access point, firewall, VPN, media converter, tranceiver, poe, hotspot, bridge, indoor, outdoor, antenne, Wi-FI, kwm, power lan, extender video</div>
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=2">Dettagli</a></div>
</div>
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Video & Security Systems</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=5"><img src="images/static/videosorveglianza.jpg" alt="Video & Security Systems" title="Video & Security Systems"/></a></div>
<div class="testoBoxCategorieHome">tutto il necessario per la video sorveglianza: dvr, telecamera analogiche, ip, speed dome, ottiche fisse, ottiche variabili, obiettivi, software di registrazione</div>
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=5">Dettagli</a></div>
</div>
<div class="boxCategoriaHome">
<div class="titleBoxCategorieHome">Servizi</div>
<div class="imgBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=9"><img src="images/static/servizi.jpg" alt="Servizi" title="Servizi"/></a></div>
<div class="testoBoxCategorieHome">distrilan offre per i propri clienti, servizi ad alto valore aggiunto quali configurazioni, riparazioni e trasporto</div><br /><br />
<div class="detailsBoxCategorieHome"><a href="articoli.aspx?filtroFamiglia=9">Dettagli</a></div>
</div>
</div>

<%
}
//se ho un utente loggato devo fare vedere quegli articoli che per la sua "categoria utente" o "catpromo" sono in promozione
else
{
%>
<asp:Label ID="lblTitoloBachecaPromo" runat="server"></asp:Label>

<asp:GridView BorderWidth="1px" BorderColor="#E2E2E2" ID="GridViewVisualizzaArticoli" runat="server" AutoGenerateColumns="False" DataKeyNames="codart" AllowPaging="True" PageSize="10" DataSourceID="SqlDataSourceVisualizzaArticoliPromozione" OnRowCommand="GridViewVisualizzaArticoli_RowCommand">
<Columns>
<asp:BoundField DataField="codart" HeaderText="Codice articolo" SortExpression="codart" />
<asp:BoundField DataField="descri" HeaderText="Descrizione" SortExpression="descri" />
<asp:BoundField DataField="prezzo" HeaderText="Prezzo promo" SortExpression="prezzo" />

<asp:TemplateField HeaderText="Vendor">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl=<%# File.Exists(Server.MapPath("public/marchi/"+Eval("nomeVendor")+"-mini.jpg"))?"public/marchi/"+Eval("nomeVendor")+"-mini.jpg":"images/static/vendorNonPresente.png"%>/>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Qty">
<ItemTemplate>
<asp:TextBox ID="txtQty" runat="server" Width="25px" MaxLength="3" />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="AddButton" runat="server" CommandName="AddToCart" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ImageUrl="~/images/static/addtocart.gif"/>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Immagine">
<ItemTemplate>
<%# File.Exists(Server.MapPath("public/articoli/" +Eval("codart") + "/" +Eval("codart") +"-mini.jpg"))? "<a title=\"codice articolo:"+ Eval("codart")+"\" rel=\"lightbox[distrilan]\" href=\"public/articoli/"+Eval("codart")+ "/"+ Eval("codart") +".jpg\"> <img src=\"public/articoli/"+Eval("codart") +"/"+Eval("codart") +"-mini.jpg\" /> </a>": "<img src=\"images/static/imgArticoloNonPresente.png\"/>"%>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Pdf">
<ItemTemplate>
<%# File.Exists(Server.MapPath("public/articoli/" + Eval("codart") + "/" + Eval("codart") + ".pdf"))? "<a href=\"#\" onClick=\"window.open('public/articoli/" + Eval("codart") + "/" + Eval("codart") + ".pdf','_blank','true')\"><img src=\"images/static/pdf.png\"/></a>":"<img src=\"images/static/pdfNonPresente.png\">"%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="#E0E0E0"/>
<RowStyle BackColor="#F4F4F4" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSourceVisualizzaArticoliPromozione" runat="server" ConnectionString="<%$ ConnectionStrings:ConnStr %>"></asp:SqlDataSource>
<%
//ho fatto vedere la tabella delle promozioni agli utenti loggati
}
%>
<!--chiudo qui il pannello update perche altrimenti dava errori-->
</ContentTemplate>
</asp:UpdatePanel>

<!--fine del tag contenuto-->
</div>

<!--fine del tag corpo-->
</div>

<!--div per allungamento pagina in tutti i browser-->
<div style="clear:both; height:20px; overflow:hidden"></div>

<div id="footer">
<div class="containerTextFooter">
<div class="textFooter">&copy 2010 DISTRILAN S.R.L. Vicolo San Giorgio n°5 20090 Buccinasco (MI) C.F e P.IVA 06619770966 <!-- <a href="http://www.mcsoftwaresolutions.net/">MC software Solutions Passepartout Mexal</a></div> -->
</div>
</div>

<!--fine del tag contenitore-->
</div>

</form>
</body>

</html>

http://www.mcsoftwaresolutions.net/

Gluck74 Profilo | Guru

ci sono 2 cose da correggere:

primo il problema è che FF ragiona diversamente sia da IE che da chrome (ho fatto i test su questi).
Mentre gli atri due browser prendono l'evento da window.event, FF lo vuole passato alla funzione.

il secondo è che il normale funzionamento di una pagina HTML, prevede che, in assenza di pulsanti, come nel tuo caso (hai un link), premendo il tasto enter viene inviata in automatico la form.

Per correggere il primo problema si mette la parola "event" tra le parentesi della funzione,
per correggere il secondo problema ti aggiunge un "return" alla chiamata della funzine, e si fa ritornare false alla funzione in modo che l'evento non venga quindi propagato.

<script language="javascript" type="text/javascript"> function redirectArticoli(event) { var key = event.keyCode; if (key == 13) { var elem = document.getElementById('txtBoxRicercaHome'); var pageRedirect = "visualizzaArticoli.aspx?ricerca=" + elem.value; self.location = pageRedirect; return false; } } </script> <asp:TextBox ID="txtBoxRicercaHome" onkeyup="return redirectArticoli(event);" />

____________
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.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5