Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Handling "Enter" key press in ASP.NET 2.0

Îåêßíçóå áðü ôï ìÝëïò Nikolis. Τελευταία δημοσίευση από το μέλος Nikolis στις 30-03-2006, 10:48. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-03-2006, 11:35 11006

    Sad [:(] Handling "Enter" key press in ASP.NET 2.0

    Γεια και χαρα σε ολους/ολες.

    Εχω μια web εφαρμογη σε ASP.NET 2.0 και χρησιμοποιω C# και JavaScript. Στο πανω μερος της εφαρμογης υπαρχει ενα Web User Control header.ascx που περιεχει μεταξυ αλλων και ενα WebControls.ImageButton το οποιο κανει logout απο την εφαρμογη οταν πατηθει (με server handler στο btnLogout_Click event σε C#). Στο κατω μερος της εφαρμογης εναλλασσονται διαφορες σελιδες (πχ που κανουν data access σε database)

    Το προβλημα που αντιμετωπιζω ειναι οτι ο handler αυτος εκτελειται ακομα και οταν πατηθει το πληκτρο Enter σε οποιοδηποτε αλλο control της σελιδας που ειναι φορτωμενη εκεινη τη στιγμη (δηλαδη οταν το focus βρισκεται εκτος της header.ascx). Για παραδειγμα, οταν ο cursor βρισκεται μεσα σε ενα TextBox σε αλλη φορμα.

    Μπορει κανεις να με διαφωτισει στο πως μπορω να αποφυγω αυτη την ανεπιθυμητη συμπεριφορα??? Ιδανικα θα ηθελα να αγνοειται γενικα το πατημα του Enter, αλλα αν γινεται απλα να αποφευγεται η κληση του handler θα ημουν ευτυχισμενος.

    Ευχαριστω προκαταβολικα,


    Νίκος Καπράλος
  •  23-03-2006, 17:00 11019 σε απάντηση της 11006

    Απ: Handling "Enter" key press in ASP.NET 2.0

    Αααα ναι, το ιδιαίτερα ενοχλητικό πρόβλημα της ASP.NET



    Ρίξε μια ματιά σε αυτόν τον κώδικα:

    http://www.dotnetspider.com/technology/KBPages/212.aspx
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  23-03-2006, 18:21 11023 σε απάντηση της 11006

    Απ: Handling "Enter" key press in ASP.NET 2.0

    Καταρχας ευχαριστω για την αμεση απαντηση.

    Απ'οτι κατάλαβα ο τυπος καλει το click event ενος συγκεκριμενου κουμπιου οταν πατηθει το Enter μεσα σε καποιο textbox.

    Ομως δεν ειναι αυτη η περιπτωση σε μενα... Δεν θελω να πατιεται κανενα κουμπι οταν πατιεται το Enter και προφανως δεν θελω να βαλω ενα onKeyDown event handler σε καθε textbox/control της φορμας μου.


    Νίκος Καπράλος
  •  23-03-2006, 20:19 11034 σε απάντηση της 11006

    Απ: Handling "Enter" key press in ASP.NET 2.0

    Λοιπόν...



    Τα textboxes, κάνουν postback αν πατήσεις Enter σε αυτά. Δεν έχω παρατηρήσει παρόμοια συμπεριφορά από άλλο control.

    Το πρώτο πρώτο submit-type control που υπάρχει στη φόρμα (πχ input-image ή input-submit), γίνεται το default submit της φόρμας.

    Έτσι δουλεύει η HTML, και δεν είναι συγκεκριμένο πρόβλημα της ASP.Net. Απλώς το χειροτερεύει.



    Με τον παραπάνω κώδικα, οδηγείς το Enter σε συγκεκριμένο control. Μπορείς φυσικά να αλλάξεις τον javascript κώδικα ώστε να μην κάνει submit. Το δεύτερο (με τη χρήση onKeyDown ή με τον τρόπο του control.Attributes.Add("onkeydown", "...");, δε βλέπω να το γλυτώνεις.





    Αν κάποιος έχει να προτείνει κάποια καλύτερη λύση, θα με ενδιέφερε κι εμένα να την ακούσω, μια και το παραπάνω με έχει ενοχλήσει ουκ ολίγες φορές.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  30-03-2006, 10:48 11360 σε απάντηση της 11006

    Απ: Handling "Enter" key press in ASP.NET 2.0

    Κατάφερα να λύσω με κάπως πρόχειρο τρόπο το παραπάνω πρόβλημα, χρησιμοποιώντας JavaScript κώδικα:

    <head>

    <script language="javascript">

    function CaptureEnter()

    {

    if(window.event.keyCode==13)

    {

    window.event.cancelBubble=true;

    window.event.returnValue=false;

    }

    }

    </script>

    </head>

    <body onkeypress="CaptureEnter();">

    Τώρα βέβαια πατώντας το Enter σε οποιοδήποτε σημείο της σελίδας δεν έχει κανένα πρακτικό αποτέλεσμα και το πάτημα των κουμπιών γίνεται μόνο με το ποντίκι, αλλά αυτή η συμπεριφορά είναι τουλάχιστον προτιμότερη από την προηγούμενη...


    Νίκος Καπράλος
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems