Usuário com melhor resposta
O alerta da minha função javascrip só funciona na 1 vez.

Pergunta
-
Por que o alerta da minha função javascript só funciona na 1 vez ?
Segue meu codigo abaixo:
Quem puder me ajudar eu agradeço muito.
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
<script>
window.onload = function()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
//alterado aqui
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>
Respostas
-
Coloca esse seu Javascript em um arquivo externo e vê se funciona.
Outra opção é remover o AutoPostBack="True"e adicionar isso ao seu javascript depois do if:
__doPostBack('ddAddressItem', this.options[this.selectedIndex].value);
- Marcado como Resposta Marcos SJ segunda-feira, 21 de março de 2016 13:52
-
Bom dia.
Ricardo, recomendo incluir a referência do jQuery no teu projeto e trocar
window.onload = function() { }
por
function pageLoad() { }
O método pageLoad() é executado TAMBÉM nos PostBacks, porém o window.onload, não (possivelmente por isso que só funciona na primeira vez que o código é executado).
Att., Rafael Simor
Todas as Respostas
-
Minha função javascript não esta funcionando.
O que esta errado no meu codigo ?
<asp:DropDownList ID="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" Style="width: 260px"/>
<script>
window.onload = function funcao1()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function ()
{
var index = drop.selectedIndex;
var value = drop.options[index].value;
var text = drop.options[index].text;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>
- Mesclado Marcos SJ segunda-feira, 14 de março de 2016 14:31 Thread duplicada
-
Olá ricardoti2012
Dê um alert na propriedade ddAddressItem.ClientID e verifique se o valor está "undefined"
Abra o modo desenvolvedor do seu navegador, coloque um breakpoint no trecho drop.addEventListener e verifique se entra na função.
Lucas Lima
- Editado Lucas Lima sexta-feira, 11 de março de 2016 11:37
- Marcado como Resposta Marcos SJ sexta-feira, 11 de março de 2016 19:36
- Não Marcado como Resposta Marcos SJ sexta-feira, 11 de março de 2016 19:39
-
Olá Ricardo,
A melhor maneira de debugar javascript é utilizando o alert dentro da função e verificando se a mesma está sendo chamada e os valores estão sendo preenchidos.
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Marcos SJ sexta-feira, 11 de março de 2016 19:42
-
Bom dia
Eu tenho essa função javascrip abaixo que chama um alerta quando o usuário escolhe uma opção diferente no meu DroDownList.
Porem essa função só é disparada uma vez apenas. Se o usuário escolher a opção de alerta na 2 vez ela não funciona.
O que tem de errado no meu codigo ?
Fico no aguardo.
Muito Obrigado.
<asp:DropDownList ID="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True" CssClass="LabelText" runat="server" Style="width: 260px"/> <script> window.onload = function funcao1() { var drop = document.getElementById("<%=ddAddressItem.ClientID%>"); drop.addEventListener("change", function () { //alterado aqui var text= this.options[this.selectedIndex].innerHTML; if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso { alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região."); } }); } </script>
- Mesclado Marcos SJ segunda-feira, 14 de março de 2016 17:16 Thread repetida
-
Essa condição está sendo satisfeita quando vc altera? Tentou colocar um ponto de parada pra ver se entá caindo no evento quando vc muda de opção?
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso { alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região."); }
Tem um detalhe:
window.onload = function funcao1() //isso nao faz sentido window.onload = function() //isso faz sentido...
Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985
- Editado André de Mattos Ferraz segunda-feira, 14 de março de 2016 12:10
-
Bom dia André
Obrigado pela ajuda. Vamos la.
Coloquei da forma que postou:
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
<script>
window.onload = function()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
//alterado aqui
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>A condição só é feita quando eu altero o DropDownList na primeira vez. Depois a função javascrip não é mais acionada. É como se ela ficasse desabilitada. Muito estranho. Não sei mais como resolver.
Obs: Seu eu dou um F5 na pagina ela volta a funcionar uma vez também. Desculpe mas estou sem entender o motivo de não esta funcionando.
Aguardeço sua ajuda.
Aguardo seu retorno.
Obrigado.
-
Bom dia pessoal
Segue meu código completo. Pois pode ser que tenha algo no meu código que só deixa a função jacascript ser executada apenas 1 vez.
<%@ Page Language="c#" CodeBehind="UserCheckoutShipping.aspx.cs" Inherits="PFWeb.UserCheckoutShipping"
AutoEventWireup="false" ValidateRequest="false" %>
<%@ Register Src="_OrderTotal.ascx" TagName="_OrderTotal" TagPrefix="uc1" %>
<!-- #include file = "register.inc" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Pageflex
Copyright (C) 2004-2012 Pageflex
All rights reserved.
-->
<html>
<head>
<title>CheckoutShipping/Window/Title</title>
<link rel="stylesheet" href="UserSite.css.aspx" type="text/css">
<%--<meta HTTP-EQUIV="refresh" CONTENT="6">--%>
</head>
<body class="page">
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<pfweb:pageheader runat="server" pageinsertselector="Shipping" />
<pfweb:warningarea runat="server" name="shippingWeightOverflow" icon="WarningIconWarning"
message='<%# Strings.Get("CheckoutShipping/Warning/shippingWeightOverflow") %>' />
<pfweb:steparea id="StepArea" runat="server" titletext='<%# Strings.Get("CheckoutSteps/Area/Title") %>'
titleicon="areaIconCheckout" helptopic="CheckoutShipping" steptype="Shipping"
commenttext='<%# Strings.Get("CheckoutShipping/Area/Comment") %>'>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Panel ID="PanelNewShipping" runat="server">
<div class="MultiShippingButton">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" id="btnShipMultiple" Text=<%# Strings.Get("CheckoutShipping/Button/ShipMultiple") %> runat="server" />
<div class="clear"> </div>
</div>
<div class="Form_Header">
<p><%# Strings.Get("CheckoutShipping/Label/ShipTo") %></p>
</div>
<div class="block" id="divMissingAddressBlock" runat="server"
style="margin-top: 10px; width: 300px; display: none">
<asp:LinkButton
Text=<%# Strings.Get("CheckoutShipping/Link/AddNewAddress") %>
class="siteLink"
runat="server"
ID="btnAddNewAddress" />
<div class="block">
<span class="tip" id="spnAddressBookEmpty" runat="server"><%# Strings.Get("CheckoutShipping/Tip/AddressBookEmpty") %></span></div>
</div>
<div class="block" style="display: block" id="divAddressBlock" runat="server">
<div class="divsInARow">
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
<script>
window.onload = function()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
//alterado aqui
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>
</div>
<div class="divsInARow">
<asp:LinkButton
class="addressBookIcon"
runat="server"
ID="lnkAddressBook"
ToolTip=<%# Strings.Get("CheckoutShipping/Tip/AddressBookLink") %>
><span class="alt"><%# Strings.Get("CheckoutShipping/Image/AddressBook") %></span></asp:LinkButton>
</div>
<div class="clear"> </div>
<p id="warningAddressBook" runat="server" Visible="False">
<span class="error">
<%# Strings.Get("CheckoutShipping/ErrorMessage/AddressInvalid") %>
</span>
<a id="linkToAddressBookItem" runat="server" class="siteLink"
href="UserContentAddressBook.aspx&msdIndex=0">
<%# Strings.Get("CheckoutShipping/Link/AddressBookItem") %></a>
</p>
<asp:UpdatePanel ID="UpdatePanelAddressBlock" runat="server" UpdateMode="Always" >
<ContentTemplate>
<div class="ShippingAddressBlock"><asp:Literal ID="LiteralAddressBlock" runat="server" /></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddAddressItem" />
</Triggers>
</asp:UpdatePanel>
</div>
</asp:Panel>
<div class="block">
<PFWeb:FieldFillingForm id="InputFields" runat="server" formName="Shipping"
HorizontalAlign="Left"/>
</div>
<div id="divBtnUpdate" runat="server">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" runat="server" id="btnUpdate"
Text=<%# Strings.Get("CheckoutShipping/Button/UpdateShippingCharges") %> />
</div>
<PFWeb:FieldFillingForm id="defaultPayment" runat="server" Visible="false" formName="Payment"/>
<p id="MessageNoOptions" class="center" runat="server">
<%# Strings.Get("CheckoutShipping/Message/NoShippingOptions") %>.
</p>
</td>
<td valign="top">
<table align="right" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="siteButtonBlock">
<PFWeb:LinkButton ID="LinkButtonCancelCheckout" Layout="nested" CssClass="siteButton"
Text=<%# Strings.Get("CheckoutSteps/Button/CancelCheckout") %>
Link="UserContentShoppingCart.aspx" runat="server"/></p>
</div>
</td>
</tr>
</table>
<div id="divSubTotal" runat="server" style="padding-top:50px;">
<uc1:_OrderTotal ID="otEstimate" runat="server" />
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
<img src="./Images/AjaxWait.gif" alt="Please Wait" />
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</pfweb:steparea>
<pfweb:pagefooter runat="server" pageinsertselector="Shipping" />
</form>
</body>
</html>
-
Ricardo,
Quando existe um UpdatePanel na página isso ocorre mesmo, portanto terá que acrescentar uma juste para que seja atribuido essa funcionalidade do javascript novamente, após o postback.
Working with jQuery within the ASP.NET UpdatePanel
http://www.codeproject.com/Articles/601683/Working-with-jQuery-within-the-ASP-NET-UpdatePanel
Segue um exemplo com jQuery, só você adaptar pro seu problema com o javascript.
Abs,
- Sugerido como Resposta André de Mattos Ferraz segunda-feira, 14 de março de 2016 16:27
- Marcado como Resposta Marcos SJ segunda-feira, 14 de março de 2016 17:17
-
Bom Tarde
Segue meu código completo. Pois pode ser que tenha algo no meu código que só deixa a função jacascript ser executada apenas 1 vez.
<%@ Page Language="c#" CodeBehind="UserCheckoutShipping.aspx.cs" Inherits="PFWeb.UserCheckoutShipping"
AutoEventWireup="false" ValidateRequest="false" %>
<%@ Register Src="_OrderTotal.ascx" TagName="_OrderTotal" TagPrefix="uc1" %>
<!-- #include file = "register.inc" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Pageflex
Copyright (C) 2004-2012 Pageflex
All rights reserved.
-->
<html>
<head>
<title>CheckoutShipping/Window/Title</title>
<link rel="stylesheet" href="UserSite.css.aspx" type="text/css">
<%--<meta HTTP-EQUIV="refresh" CONTENT="6">--%>
</head>
<body class="page">
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<pfweb:pageheader runat="server" pageinsertselector="Shipping" />
<pfweb:warningarea runat="server" name="shippingWeightOverflow" icon="WarningIconWarning"
message='<%# Strings.Get("CheckoutShipping/Warning/shippingWeightOverflow") %>' />
<pfweb:steparea id="StepArea" runat="server" titletext='<%# Strings.Get("CheckoutSteps/Area/Title") %>'
titleicon="areaIconCheckout" helptopic="CheckoutShipping" steptype="Shipping"
commenttext='<%# Strings.Get("CheckoutShipping/Area/Comment") %>'>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Panel ID="PanelNewShipping" runat="server">
<div class="MultiShippingButton">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" id="btnShipMultiple" Text=<%# Strings.Get("CheckoutShipping/Button/ShipMultiple") %> runat="server" />
<div class="clear"> </div>
</div>
<div class="Form_Header">
<p><%# Strings.Get("CheckoutShipping/Label/ShipTo") %></p>
</div>
<div class="block" id="divMissingAddressBlock" runat="server"
style="margin- width: 300px; display: none">
<asp:LinkButton
Text=<%# Strings.Get("CheckoutShipping/Link/AddNewAddress") %>
class="siteLink"
runat="server"
ID="btnAddNewAddress" />
<div class="block">
<span class="tip" id="spnAddressBookEmpty" runat="server"><%# Strings.Get("CheckoutShipping/Tip/AddressBookEmpty") %></span></div>
</div>
<div class="block" style="display: block" id="divAddressBlock" runat="server">
<div class="divsInARow">
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
<script>
window.onload = function()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
//alterado aqui
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>
</div>
<div class="divsInARow">
<asp:LinkButton
class="addressBookIcon"
runat="server"
ID="lnkAddressBook"
ToolTip=<%# Strings.Get("CheckoutShipping/Tip/AddressBookLink") %>
><span class="alt"><%# Strings.Get("CheckoutShipping/Image/AddressBook") %></span></asp:LinkButton>
</div>
<div class="clear"> </div>
<p id="warningAddressBook" runat="server" Visible="False">
<span class="error">
<%# Strings.Get("CheckoutShipping/ErrorMessage/AddressInvalid") %>
</span>
<a id="linkToAddressBookItem" runat="server" class="siteLink"
href="UserContentAddressBook.aspx&msdIndex=0">
<%# Strings.Get("CheckoutShipping/Link/AddressBookItem") %></a>
</p>
<asp:UpdatePanel ID="UpdatePanelAddressBlock" runat="server" UpdateMode="Always" >
<ContentTemplate>
<div class="ShippingAddressBlock"><asp:Literal ID="LiteralAddressBlock" runat="server" /></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddAddressItem" />
</Triggers>
</asp:UpdatePanel>
</div>
</asp:Panel>
<div class="block">
<PFWeb:FieldFillingForm id="InputFields" runat="server" formName="Shipping"
HorizontalAlign="Left"/>
</div>
<div id="divBtnUpdate" runat="server">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" runat="server" id="btnUpdate"
Text=<%# Strings.Get("CheckoutShipping/Button/UpdateShippingCharges") %> />
</div>
<PFWeb:FieldFillingForm id="defaultPayment" runat="server" Visible="false" formName="Payment"/>
<p id="MessageNoOptions" class="center" runat="server">
<%# Strings.Get("CheckoutShipping/Message/NoShippingOptions") %>.
</p>
</td>
<td valign="top">
<table align="right" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="siteButtonBlock">
<PFWeb:LinkButton ID="LinkButtonCancelCheckout" Layout="nested" CssClass="siteButton"
Text=<%# Strings.Get("CheckoutSteps/Button/CancelCheckout") %>
Link="UserContentShoppingCart.aspx" runat="server"/></p>
</div>
</td>
</tr>
</table>
<div id="divSubTotal" runat="server" style="padding-">
<uc1:_OrderTotal ID="otEstimate" runat="server" />
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
<img src="./Images/AjaxWait.gif" alt="Please Wait" />
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</pfweb:steparea>
<pfweb:pagefooter runat="server" pageinsertselector="Shipping" />
</form>
</body>
</html>Alguém pode me ajudar for favor.
Fico no aguardo
Obrigado
- Mesclado Marcos SJ segunda-feira, 21 de março de 2016 13:54 Thread duplicada
-
Ricardo,
evite abrir várias threads com o mesmo assunto.
Função Javascrip não esta funcionando
Função JavaScrip só funciona 1 vez
Por que a minha função javascript só é executada apenas 1 vez
Acompanhe sempre na mesma thread, até porque se houver outra pessoa que queira te ajudar, já vai saber todo o histórico do problema para não perder tempo com soluções já propostas anteriormente.
Para fazer a thread entrar em evidência novamente, basta postar algo nela.
Att,
Antero Marques
-
Bom dia Ricardo Rodrigues
Eu mudei meu código conforme seu link porem o problema ainda continua o mesmo.
A função javascrip só funciona na 1 vez.
Se puder me ajudar eu agradeço muito.
Fico no aguardo.
<%@ Page Language="c#" CodeBehind="UserCheckoutShipping.aspx.cs" Inherits="PFWeb.UserCheckoutShipping"
AutoEventWireup="false" ValidateRequest="false" %>
<%@ Register Src="_OrderTotal.ascx" TagName="_OrderTotal" TagPrefix="uc1" %>
<!-- #include file = "register.inc" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Pageflex
Copyright (C) 2004-2012 Pageflex
All rights reserved.
-->
<html>
<head>
<title>CheckoutShipping/Window/Title</title>
<link rel="stylesheet" href="UserSite.css.aspx" type="text/css">
<script>
window.onload = function () {
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
//alterado aqui
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
</script>
</head>
<body class="page">
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<pfweb:pageheader runat="server" pageinsertselector="Shipping" />
<pfweb:warningarea runat="server" name="shippingWeightOverflow" icon="WarningIconWarning"
message='<%# Strings.Get("CheckoutShipping/Warning/shippingWeightOverflow") %>' />
<pfweb:steparea id="StepArea" runat="server" titletext='<%# Strings.Get("CheckoutSteps/Area/Title") %>'
titleicon="areaIconCheckout" helptopic="CheckoutShipping" steptype="Shipping"
commenttext='<%# Strings.Get("CheckoutShipping/Area/Comment") %>'>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Panel ID="PanelNewShipping" runat="server">
<div class="MultiShippingButton">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" id="btnShipMultiple" Text=<%# Strings.Get("CheckoutShipping/Button/ShipMultiple") %> runat="server" />
<div class="clear"> </div>
</div>
<div class="Form_Header">
<p><%# Strings.Get("CheckoutShipping/Label/ShipTo") %></p>
</div>
<div class="block" id="divMissingAddressBlock" runat="server"
style="margin-top: 10px; width: 300px; display: none">
<asp:LinkButton
Text=<%# Strings.Get("CheckoutShipping/Link/AddNewAddress") %>
class="siteLink"
runat="server"
ID="btnAddNewAddress" />
<div class="block">
<span class="tip" id="spnAddressBookEmpty" runat="server"><%# Strings.Get("CheckoutShipping/Tip/AddressBookEmpty") %></span></div>
</div>
<div class="block" style="display: block" id="divAddressBlock" runat="server">
<div class="divsInARow">
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
</div>
<div class="divsInARow">
<asp:LinkButton
class="addressBookIcon"
runat="server"
ID="lnkAddressBook"
ToolTip=<%# Strings.Get("CheckoutShipping/Tip/AddressBookLink") %>
><span class="alt"><%# Strings.Get("CheckoutShipping/Image/AddressBook") %></span></asp:LinkButton>
</div>
<div class="clear"> </div>
<p id="warningAddressBook" runat="server" Visible="False">
<span class="error">
<%# Strings.Get("CheckoutShipping/ErrorMessage/AddressInvalid") %>
</span>
<a id="linkToAddressBookItem" runat="server" class="siteLink"
href="UserContentAddressBook.aspx&msdIndex=0">
<%# Strings.Get("CheckoutShipping/Link/AddressBookItem") %></a>
</p>
<asp:UpdatePanel ID="UpdatePanelAddressBlock" runat="server" UpdateMode="Always" >
<ContentTemplate>
<div class="ShippingAddressBlock"><asp:Literal ID="LiteralAddressBlock" runat="server" /></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddAddressItem" />
</Triggers>
</asp:UpdatePanel>
</div>
</asp:Panel>
<div class="block">
<PFWeb:FieldFillingForm id="InputFields" runat="server" formName="Shipping"
HorizontalAlign="Left"/>
</div>
<div id="divBtnUpdate" runat="server">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" runat="server" id="btnUpdate"
Text=<%# Strings.Get("CheckoutShipping/Button/UpdateShippingCharges") %> />
</div>
<PFWeb:FieldFillingForm id="defaultPayment" runat="server" Visible="false" formName="Payment"/>
<p id="MessageNoOptions" class="center" runat="server">
<%# Strings.Get("CheckoutShipping/Message/NoShippingOptions") %>.
</p>
</td>
<td valign="top">
<table align="right" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="siteButtonBlock">
<PFWeb:LinkButton ID="LinkButtonCancelCheckout" Layout="nested" CssClass="siteButton"
Text=<%# Strings.Get("CheckoutSteps/Button/CancelCheckout") %>
Link="UserContentShoppingCart.aspx" runat="server"/></p>
</div>
</td>
</tr>
</table>
<div id="divSubTotal" runat="server" style="padding-top:50px;">
<uc1:_OrderTotal ID="otEstimate" runat="server" />
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
<img src="./Images/AjaxWait.gif" alt="Please Wait" />
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</pfweb:steparea>
<pfweb:pagefooter runat="server" pageinsertselector="Shipping" />
</form>
</body>
</html>
-
-
-
Ricardo,
Segue um código de exemplo, adaptado com a sua situação:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="javascript_updatepanel.aspx.cs" Inherits="Teste.Web.UI.testes.javascript_updatepanel" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Javascript - UpdatePanel</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True" CssClass="LabelText" runat="server" style="width: 260px" />
<asp:Button ID="Button1" runat="server" Text="Send" />
<script type="text/javascript">
window.onload = endRequest;
function selectAddressItem() {
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim") // pode ser o value dependendo o caso
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest(sender, args) {
selectAddressItem();
}
</script>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Obs.: vc pode utilizar qualquer nome para a function, deixei esses mesmo. Espero que ajude.- Sugerido como Resposta Roberto AB Filho terça-feira, 15 de março de 2016 19:00
- Editado Renildo Rodrigues terça-feira, 15 de março de 2016 20:10
- Marcado como Resposta Marcos SJ terça-feira, 15 de março de 2016 20:20
-
Boa Tarde Renildo Rodrigues
Muito Obrigado por tentar me ajudar
Coloquei o seu Código adaptando as minhas condições aqui.
Porem agora não chama a função do javascrip
<%@ Page Language="c#" CodeBehind="UserCheckoutShipping.aspx.cs" Inherits="PFWeb.UserCheckoutShipping"
AutoEventWireup="false" ValidateRequest="false" %>
<%@ Register Src="_OrderTotal.ascx" TagName="_OrderTotal" TagPrefix="uc1" %>
<!-- #include file = "register.inc" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Pageflex
Copyright (C) 2004-2012 Pageflex
All rights reserved.
-->
<html>
<head>
<title>CheckoutShipping/Window/Title</title>
<link rel="stylesheet" href="UserSite.css.aspx" type="text/css">
<%--<meta HTTP-EQUIV="refresh" CONTENT="6">--%>
</head>
<body class="page">
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<pfweb:pageheader runat="server" pageinsertselector="Shipping" />
<pfweb:warningarea runat="server" name="shippingWeightOverflow" icon="WarningIconWarning"
message='<%# Strings.Get("CheckoutShipping/Warning/shippingWeightOverflow") %>' />
<pfweb:steparea id="StepArea" runat="server" titletext='<%# Strings.Get("CheckoutSteps/Area/Title") %>'
titleicon="areaIconCheckout" helptopic="CheckoutShipping" steptype="Shipping"
commenttext='<%# Strings.Get("CheckoutShipping/Area/Comment") %>'>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Panel ID="PanelNewShipping" runat="server">
<div class="MultiShippingButton">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" id="btnShipMultiple" Text=<%# Strings.Get("CheckoutShipping/Button/ShipMultiple") %> runat="server" />
<div class="clear"> </div>
</div>
<div class="Form_Header">
<p><%# Strings.Get("CheckoutShipping/Label/ShipTo") %></p>
</div>
<div class="block" id="divMissingAddressBlock" runat="server"
style="margin-top: 10px; width: 300px; display: none">
<asp:LinkButton
Text=<%# Strings.Get("CheckoutShipping/Link/AddNewAddress") %>
class="siteLink"
runat="server"
ID="btnAddNewAddress" />
<div class="block">
<span class="tip" id="spnAddressBookEmpty" runat="server"><%# Strings.Get("CheckoutShipping/Tip/AddressBookEmpty") %></span></div>
</div>
<div class="block" style="display: block" id="divAddressBlock" runat="server">
<div class="divsInARow">
<asp:DropDownList id="ddAddressItem" OnSelectedIndexChanged="ddAddressItem_SelChanged" AutoPostBack="True"
CssClass="LabelText" runat="server" style="width: 260px" />
<script type ="text/javascript">
window.onload = endRequest;
function selectAddressItem()
{
var drop = document.getElementById("<%=ddAddressItem.ClientID%>");
drop.addEventListener("change", function () {
var text = this.options[this.selectedIndex].innerHTML;
if (text != "CNA Matriz" && text != "Retirar na Artsim")
{
alert("Atenção: Nesta opção de envio será cobrado a taxa a pagar do sedex conforme sua região.");
}
});
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest(sender, args)
{
selectAdressItem();
}
</script>
</div>
<div class="divsInARow">
<asp:LinkButton
class="addressBookIcon"
runat="server"
ID="lnkAddressBook"
ToolTip=<%# Strings.Get("CheckoutShipping/Tip/AddressBookLink") %>
><span class="alt"><%# Strings.Get("CheckoutShipping/Image/AddressBook") %></span></asp:LinkButton>
</div>
<div class="clear"> </div>
<p id="warningAddressBook" runat="server" Visible="False">
<span class="error">
<%# Strings.Get("CheckoutShipping/ErrorMessage/AddressInvalid") %>
</span>
<a id="linkToAddressBookItem" runat="server" class="siteLink"
href="UserContentAddressBook.aspx&msdIndex=0">
<%# Strings.Get("CheckoutShipping/Link/AddressBookItem") %></a>
</p>
<asp:UpdatePanel ID="UpdatePanelAddressBlock" runat="server" UpdateMode="Always" >
<ContentTemplate>
<div class="ShippingAddressBlock"><asp:Literal ID="LiteralAddressBlock" runat="server" /></div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddAddressItem" />
</Triggers>
</asp:UpdatePanel>
</div>
</asp:Panel>
<div class="block">
<PFWeb:FieldFillingForm id="InputFields" runat="server" formName="Shipping"
HorizontalAlign="Left"/>
</div>
<div id="divBtnUpdate" runat="server">
<PFWeb:LinkButton Layout="nested" CssClass="siteButton" runat="server" id="btnUpdate"
Text=<%# Strings.Get("CheckoutShipping/Button/UpdateShippingCharges") %> />
</div>
<PFWeb:FieldFillingForm id="defaultPayment" runat="server" Visible="false" formName="Payment"/>
<p id="MessageNoOptions" class="center" runat="server">
<%# Strings.Get("CheckoutShipping/Message/NoShippingOptions") %>.
</p>
</td>
<td valign="top">
<table align="right" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div class="siteButtonBlock">
<PFWeb:LinkButton ID="LinkButtonCancelCheckout" Layout="nested" CssClass="siteButton"
Text=<%# Strings.Get("CheckoutSteps/Button/CancelCheckout") %>
Link="UserContentShoppingCart.aspx" runat="server"/></p>
</div>
</td>
</tr>
</table>
<div id="divSubTotal" runat="server" style="padding-top:50px;">
<uc1:_OrderTotal ID="otEstimate" runat="server" />
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
<img src="./Images/AjaxWait.gif" alt="Please Wait" />
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</pfweb:steparea>
<pfweb:pagefooter runat="server" pageinsertselector="Shipping" />
</form>
</body>
</html> -
Quantas opções existem para o ddAddressItem?
Faz um teste... remove o AutoPostBack="True" para ver se o alerta funciona corretamente. Pode ser que o listener (adicionado pelo .NET devido ao AutoPostBack="True") está afetando o seu listener
-
Bom dia Cesar
Sim se eu tirar o AutoPostBack="True" o alerta funciona perfeitamente.
Porem como você viu no meu código eu preciso do AutoPostBack="True" para pode acionar o
OnSelectedIndexChanged="ddAddressItem_SelChanged"
Entendeu ?
Tem alguma idéia de como você pode me ajudar ?
Fico no aguardo.
Muito Obrigado.
-
Coloca esse seu Javascript em um arquivo externo e vê se funciona.
Outra opção é remover o AutoPostBack="True"e adicionar isso ao seu javascript depois do if:
__doPostBack('ddAddressItem', this.options[this.selectedIndex].value);
- Marcado como Resposta Marcos SJ segunda-feira, 21 de março de 2016 13:52
-
Ricardo,
Conforme o exemplo fornecido, essa chamada deve está dentro das tags do UpdatePanel e pelo exemplo que você adaptou a chamada está sendo feita fora dessas tags. Mova a chamada para dentro das tags do UpdatePanel, conforme exemplo e veja se funcionará.
Obs.: crie uma página simples, copie e cole o exemplo fornecido e verá que o mesmo funcionará, daí só verificar o que você possa ter feito de diferente do exemplo.
Abs,
- Editado Renildo Rodrigues segunda-feira, 21 de março de 2016 13:36
-
Ricardo,
Acho que seria melhor você dar continuidade no post anterior.
https://social.msdn.microsoft.com/Forums/pt-BR/eee12ade-8220-4cdc-a04c-118be8e389a4/por-que-a-minha-funo-javascript-s-executada-apenas-1-vez-?forum=aspnetpt
Abs,
- Editado Renildo Rodrigues segunda-feira, 21 de março de 2016 13:41
-
Bom dia.
Ricardo, recomendo incluir a referência do jQuery no teu projeto e trocar
window.onload = function() { }
por
function pageLoad() { }
O método pageLoad() é executado TAMBÉM nos PostBacks, porém o window.onload, não (possivelmente por isso que só funciona na primeira vez que o código é executado).
Att., Rafael Simor
-
Bom dia ricardoti2012,
Tudo bem?
Novamente peço que por gentileza, você não crie mais duplicações da mesma thread. Caso continue fazendo isso serei obrigado a reportar seu perfil de usuário. Crie uma thread e continue procurando auxílio na mesma thread até o fim. Até porque, isso vai te ajudar, pois os novos usuários a tentar te auxiliar vão poder ver o que já foi feito. Não problema algum em discordar da resposta marcada, mas não crie duplicações da mesma thread. E lembre-se, threads de "How to" serão modificadas para discussão geral, pois o fórum não presta suporte a "How to".
Atenciosamente
Marcos SJ
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Editado Marcos SJ segunda-feira, 21 de março de 2016 14:18
-