3.826 messaggi dal 28 gennaio 2003
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>


<script type="text/javascript">

function Button1_onclick()
{
    var v =document.getElementById("DropDownList1");
    //alert(v.onchange);
    v.onchange();
}


function DropDownList1_onchange(v)
{
    document.getElementById("div2").innerHTML += "<br>" + v.value + " " + Date();
}

</script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="div1" class="a_colore_grigio" >
        <asp:DropDownList ID="DropDownList1" runat="server" onchange="DropDownList1_onchange(this)">
            <asp:ListItem Value="" Text=""></asp:ListItem>
            <asp:ListItem Value="1" Text="1"></asp:ListItem>
            <asp:ListItem Value="2" Text="2"></asp:ListItem>
            <asp:ListItem Value="3" Text="3"></asp:ListItem>
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>
        <br /><br />
        <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
        <br /><br />
        <div id="div2"></div>
    </div>
    </form>
</body>
</html>


Il codice riportato simula un problema che ho avuto solo con Firefox.
Ho la necessità di lanciare l'evento onchange di un dropdown, da codice.
Se, per esempio, non uso Firefox, seleziono un elemento del dropdwon, vedo l'elemento selezionato nel div.
Se lancio lo stesso evento da codice, col pulsante Button1, vedo che questo evento viene lanciato perchè aggiunge una riga nel div.
Con Firefox non funziona.
Certo, con jquery funziona. Oppure, richiamando il metodo DropDownList1_onchange, funziona.
Ma a me incuriosisce risolvere "in maniera nativa" pure con firefox.

ps. noto che se tolgo il RequiredFieldValidator, funziona.

Pietro
677 messaggi dal 11 febbraio 2013
questo ti funziona?
  document.querySelector('Id').addEventListener('change', function(){...});
3.826 messaggi dal 28 gennaio 2003
Ti ringrazio della risposta. Non funziona, forse perchè non ho applicato bene quella istruzione.
Comunque, questa istruzione:
<select name="DropDownList1" id="DropDownList1" onchange="DropDownList1_onchange(this)">

non credo che sia obsoleta.

All'evento changed, viene richiamato questo codice:
ValidatorOnChange(event);
DropDownList1_onchange(this)


e DropDownList1_onchange non viene richiamata (in firefox) perchè ValidatorOnChange va in errore

Questa funzione (che è nel framework 4) ha questa prima istruzione:

event = event || window.event;

ed è qui il problema

se la sostituisce con
if(!event) var event = window.event;

funziona!

se aggiungo invece questa istruzione:
if(event == undefined) return;

Funziona!

Comunque credo che il problema sia di Firefox. Troppi siti importanti zoppicano con Firefox
Oramai sta diventando peggio di IE6 purtroppo.

Ciao.
Modificato da pietro09 il 08 marzo 2018 18.09 -

Pietro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.