2013-08-26 12 views
8

Ich habe ein button und ein dropdownlstFormular senden Ereignis erfasst OnSelectedIndexChanged nicht?

enter image description here

Und ich habe dieses Skript:

$("form").submit(function (e) 
    { 
     $('#divOverlay').show(); 
     }); 

Mein Ziel:

Wenn ein Formular abschickt, ich brauche ein „Laden zeigen div ":

Frage:

Wenn ich die Taste drücken, es nicht zeigen Sie mir den div (die graue div, die für ein zweites blinkt):

enter image description here

Aber wenn ich Index für die Dropdownlist zu ändern:

<asp:DropDownList runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True"> 
    <asp:ListItem Value="a"> a</asp:ListItem> 
     <asp:ListItem Value="b">b</asp:ListItem> 
</asp:DropDownList> 

Es unterwirft, aber ich nicht die div sehen:

enter image description here

Warum hat die $("form").submit(function (e) nicht dieses Postbacks erfassen, die nach dem ausgewählten Indexänderung auftritt? ?

NB:

Fiddler zeigt beide Ereignisse (durch Drücken der Taste & & Ändern Index) als POST Befehl

Was ist die Struktur der Datei? (Psuedo):

<html > 
<head> 
...  
</head> 
<body> 
    <div id='divOverlay'> 
     ... 
    </div> 

     <form id="form1" runat="server" > 
      <asp:Button runat="server" Text="sssssss"/> 
     <asp:DropDownList runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True"> 
      ... 
     </asp:DropDownList> 

     </form> 


     <script type="text/javascript"> 
      $(function() 
       { 
        $("form").submit(function (e) 
        { 
          $('#divOverlay').show(); 
        }); 
       }); 

     </script> 
</body> 
</html> 

Können Sie zeigen die Differenz zwischen den beiden Anforderungen, die an den Server gesendet? **Yes. **

Die rechte Seite ist, wenn Index und der linke Bereich ist

für Tastendruck geändert wird enter image description here

+0

Vielleicht wird dies helfen: http://stackoverflow.com/questions/2073384/jquery-form-submitfn-does-nicht-arbeiten-mit-asp-net – Johan

+0

@Johan Versuchte sowohl mit document.ready und ohne - und es funktioniert immer noch nicht –

+0

Dies scheint verwandt zu sein: http: // stackoverflow.com/questions/1230573/how-to-capture-submit-event-using-jquery-in-an-asp-net-application Vielleicht th bei hilft? – michael81

Antwort

2

Es gibt eine Methode des ASP.NET: ClientScript.RegisterOnSubmitStatement, dass Sie eine JavaScript-Anweisung jedes Mal ausgeführt können die Htmlform vorgelegt

ClientScript.RegisterOnSubmitStatement(this.GetType(), "divOverlayShow", "$('#divOverlay').show();"); 
+0

Dies funktioniert. Danke, ich werde untersuchen, was JS dahinter generiert. –

+0

Seltsam, aber '$ (" form "). Attr ('onsubmit', 'alert (1);');' funktioniert. beim Anhängen von JS Event-Handler funktioniert nicht .... –

1

ich das Autopostback Verhalten erraten ist die Form durch Javascript und ein Aufruf an __doPostBack() einreichen , die das Submit-Ereignis nicht auslöst.

können Sie versuchen:

<asp:DropDownList onchange="$('#divOverlay').show();" runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True"> 
+0

Submit ist eine Javascript-Methode des Formularobjekts. Es ist auch ein Ereignis, das ausgelöst wird, wenn das Formular vom Benutzer gesendet wird. Es wird jedoch nicht ausgelöst, wenn das Formular über Code gesendet wird. http://stackoverflow.com/q/645555/1236044 – jbl

0

nicht sicher, klingt wie die Postbacks der DDL und der Form r abgesehen von verschieden.

sowieso würde ich u Beratung einfach zu lösen, indem die Autopostback aus der DDL fallen und eine clientseitige Onchange hinzufügen, wo es kann u zeigen entweder die graue div und dann Postback manuell die serverseitige onselect wie folgt aus: http://bresleveloper.blogspot.co.il/2012/05/force-updatepanel-postback.html oder nur $ ("form").submit()

+0

Der ganze Zweck ist es, ein Skript hinzuzufügen, das ein div für eine ** gegebene Seite ** zeigt, was bedeutet - das HTML nicht zu berühren und es mit reinem JS zu lösen . und deine lösung erfordert funktionalität/code für jede seite zu ändern –

+0

ich glaube, ich habe hier etwas verpasst Royi, du tust sowieso dieses $ ("form"). submit (funktion (e) {$ ('# divOverlay'). show() ;}); warum kannst du da einfach eine Zeile hinzufügen? Entschuldigung für die Ignoranz m8 – bresleveloper

+0

Dies geschieht auf eine separate JS-Datei (js-Datei) .p.s. Ich habe bereits eine Lösung gefunden. Morgen schlechtes Update. –

0

Nicht sicher, ob das helfen würde, aber das hat für mich funktioniert. Ich kann das Overlay div in beiden Events zeigen.

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("form").submit(function (e) { 
       alert("Submit"); 
      }); 
      $("#dropdown").change(function (e) { 
       alert("Hi"); 
      }); 
     }); 

    </script> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:Button runat="server" ID="submitbutton" Text="submit"/> 
    <asp:DropDownList ID="dropdown" ClientIDMode="Static" runat="server" AutoPostBack="True" OnSelectedIndexChanged="OnSelectedIndexChange"/> 
</asp:Content> 
Verwandte Themen