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

 

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

VS2003 - Enable a textbox when a checkbox is checked

Îåêßíçóå áðü ôï ìÝëïò girl_freak. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 28-05-2007, 11:10. Υπάρχουν 14 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-05-2007, 10:30 32022

    Surprise [:O] VS2003 - Enable a textbox when a checkbox is checked

    Έχω μια WebFormσε VS2003, στην οποία έχω ένα checkbox και ένα textbox και θέλω να ισχύει το εξής:

    Η οθόνη είναι οθόνη καταχώρησης στοιχείων.Tongue Tied

    1. Όταν ανοίγει ο χρήστης την οθόνη, το checkbox να είναι by default unchecked και το textbox disabled.

    2. Όταν ο χρήστης τσεκάρει το checkbox το textboc να γίνει enabled, έτσι ώστε να μπορεί να γράψει ότι θέλει.

    3. Όταν ο χρήστης "ξετσεκάρει" το checkbox το textbox να γίνεται πάλι disabled. Σε περίπτωση που έχει γραφτεί κάτι στο textbox να σβηστεί η εγγραφή.

    Μπορεί κάποιος να με βοηθήσει με αυτό??

    Girl_freakSmile

     


    Hello world....
  •  21-05-2007, 11:45 32032 σε απάντηση της 32022

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Θα μπορούσες στο CheckedChange event του CheckBox να κάνεις αυτά που περιγράφεις, κάπως έτσι

    private void CheckBox1_CheckedChanged(object sender, System.EventArgs e)
    {

        if (CheckBox1.Checked)
        {
             TextBox1.Enabled = true;
          
    }
       else
       {
          TextBox1.Text = "";
          TextBox1.Enabled = false;
         }

     

    ΑΛΛΑ

    επειδή αυτό προκαλεί postbacks και ξαναφορτώνει η σελίδα κάθε φορά θα σου πρότεινα να το κάνεις με javascript ως εξής

    στην .aspx σελίδα έχεις τα controls

    <asp:checkbox id="CheckBox1" runat="server" AutoPostBack="false" onclick="enableTextBox();"></asp:checkbox>
    (έχεις συμπληρώσει και το onclick για να τρέξει το javascript)

    και

    <asp:textbox id="TextBox1" runat="server" Width="500px" TextMode="MultiLine" Rows="6"></asp:textbox>

    Και στο στο head, γράφεις και το

       <script>

      function enableTextBox()
      {
          if(window.document.getElementById("CheckBox1").checked)
          {
              window.document.getElementById("TextBox1").style.visibility = "visible";
          }
          else
          {
              window.document.getElementById("TextBox1").style.visibility = "hidden";
              window.document.getElementById("TextBox1").innerText="";         
          }
      }
      
      </script>

    That's it!

    Good luck!


  •  21-05-2007, 16:32 32056 σε απάντηση της 32032

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Δεν αναγνωρίζει το onclick σαν attribute του checkbox!!!!

    Μπορεί να διορθωθέι αυτό??


    Hello world....
  •  22-05-2007, 13:28 32075 σε απάντηση της 32056

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Περνάει από compile έτσι δεν είναι??

  •  22-05-2007, 13:33 32077 σε απάντηση της 32056

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Ariadne, δυστυχώς καμία από τις δυο λύσεις δεν έχει αποτέλεσμα!!!!


    Hello world....
  •  22-05-2007, 13:39 32080 σε απάντηση της 32077

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Είναι ένα web part σε ένα sharepoint site....αν αυτό σε βοηθάει!!!

    Κάνω αλλαγές στο solution file του vs2003 και μετά rebuild....και απλά κάνω copy μετά το .dll αρχείο και τα .ascx αρχεία στο αντίστοχο folder τοου sharepoint.


    Hello world....
  •  22-05-2007, 14:02 32081 σε απάντηση της 32080

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Δεν έχω ασχοληθεί με web parts, απλά το πρώτο είναι η πιο απλή (αν και μη efficient λύση) και σίγουρα παίζει.

    Α, εννοείται ότι έχεις επιλέξει το property AutoPostBack=true για το checkbox!

  •  24-05-2007, 13:45 32200 σε απάντηση της 32081

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Ariadne σε ευχαριστώ πολύ....

    τελικά το έκανα με τον πρώτο τρόπο που μου είχες αναφέρει...και ας κάνει  postback η σελίδα κάθε φορά....


    Hello world....
  •  25-05-2007, 11:56 32220 σε απάντηση της 32022

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Βρήκα το εξής, ίσως σε βολεύει καλύτερα.

    Ο JavaScript κώδικας είναι:

    function enableTextBox()
    {
    if(window.document.getElementById("CheckBox1").checked)
    {
    window.document.getElementById("TextBox1").disabled=false;
    }
    else
    {
    window.document.getElementById("TextBox1").disabled=true;
    }
    }


    και μετά γράφεις:

    Private Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
          CheckBox1.Attributes.Add("onClick", "return enableTextBox();")
    End Sub


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  25-05-2007, 13:50 32222 σε απάντηση της 32220

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    όλα αυτά πρέπει να μπούν στην .aspx σελίδα της εφαρμογής ή στην εκάστοτε .ascx σελίδα.

    Να σας θυμησω ότι μιλάμε για VS 2003...ουσιαστικά κάθε φορά ανοίγω την εφαρμογή από το .sln αρχείο και χρησιμοποιώ τις .ascx σελίδες που υπάρχουν στα User Controls του project.

    Κάνω ότι αλλαγές είναι να κάνω και μετά επιλέγω Rebuild Solution.

    Μήπως το λάθος είναι δικό μου και όλο αυτό δεν αφορά WebForms??


    Hello world....
  •  25-05-2007, 14:30 32227 σε απάντηση της 32222

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Συνημμένα: WebProject1.rar

    Λοιπόν, ο κώδικας που σου έδωσα πριν δουλεύει όταν έχεις στην Web Form σου ένα checkbox. Αν θέλεις να έχεις ένα checkbox σε ένα δικό σου control, πρέπει να γίνουν κάποιες αλλαγές. Σου επισυνάπτω ένα αρχείο να δεις τι γίνεται. Ελπίζω να είναι ok αυτή τη φορά. Επίσης έχει και τον κώδικα για το textbox που έχει περιορισμένο μήκος. Για πρακτικούς λόγους το έχω ορίσει στο 5. Για να το κάνεις να τρέχει με άλλο μέγεθος, άλλαξε στο .vb αρχείο το 5 σε ότι θέλεις, καθώς και το MaxLength του textbox. Ο κώδικας της Javascript είναι στο .ascx αρχείο αλλά μάλλον θα δουλέυει και στο .aspx αρχείο. Δεν το έχω δοκιμάσει, αλλά φαντάζομαι ότι θα είναι ok. Ο κώδικας είναι λίγο αλλαγμένος σε σχέση με τα προηγούμενα post.


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  25-05-2007, 16:40 32231 σε απάντηση της 32227

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Μπορείς να μου διευκρινήσεις αν έχω κάνει κάπου λάθος? Smile
     
    Στο .ascx αρχείο έχω προσθέσει το παρακάτω κομμάτι Javascript κώδικα:
     
    <script language="javascript">
             function enableTextBox() {
                   if (window.document.getElementById("chkOtherDoc").checked) {
                           window.document.getElementById("txtOtherDoc").disabled=false;
                   }
                   else {
                            window.document.getElementById("txtOtherDoc").disabled=true;
                   }
    </script>
     
    και στα controls του .ascx αρχείου έχω βάλει τα εξής, όσον αφορά το checkbox και το textbox:
     
    <asp:checkbox id="chkOtherDoc" runat="server" AutoPostBack="false" text="other" checked="false"></asp:checkbox>
    <asp:textbox id="txtOtherDoc" runat="server" MaxLenght="50" enabled="false"></asp:textbox>
     
    Έβαλα checked="false" για το checkbox και enabled="false" για το textbox διότι΄θέλω όταν ανοίγει η σελίδα να είναι το ένα unchecked και το άλλο disable.
     
    Στη συνέχεια στο .ascx.vb αρχείο πρόσθεσα το εξής:
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Common.CheckAdministrativeAccess()
       pnlNav.Controls.Add(LoadControl("ot_nav_orders.ascx"))
     
          If Not Page.IsPostBack Then
             ...........
             chkOtherDoc.Attributes.Add("onClick", "return enableTextBox();")
          End If
     
    End Sub
     
     
    
    

    Hello world....
  •  25-05-2007, 17:08 32232 σε απάντηση της 32231

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Java-Script: Ο κώδικας σου χρειάζεται μία αλλαγή, αν το όνομα του control είναι MyWebUserControl και στην web φόρμα σου (.aspx αρχείο) του έχεις δώσει όνομα MyWebUserControl1 τότε όταν θέλεις να αναφερθείς από την JS (Javascript) σε κάτι που είναι μέσα στο MyWebUserControl1, πρέπει να γράψεις την πρώτη γραμμή και όχι την δεύτερη.

    if (window.document.getElementById("MyWebUserControl1:chkOtherDoc").checked) { //Σωστό
    if (window.document.getElementById("chkOtherDoc").checked) { //Λάθος

    Αυτό πρέπει να το κάνεις σε κάθε αναφορά μέσα στον κώδικα της JS, άρα και για το txtOtherDoc.

    VB: Όσο αφορά τη VB πρέπει να γράψεις τα εξής στην Page_Load συνάρτηση για να μπορεί να κληθεί ο κώδικας της JS. Το παρακάτω κομμάτι κώδικα πρέπει να εκτελεστεί όταν φορτώνει η σελίδα, ίσως πρέπει να βάλεις τις δύο γραμμές αυτές στην αρχή του κώδικα της συνάρτησης. Όλα αυτά μπαίνουν στο .ascx.vb αρχείο.

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       TxtOtherDoc.Attributes.Add("onKeyDown", "return limitText(this, 5);")
       ChkOtherDoc.Attributes.Add("onClick", "return enableTextBox();")
    End Sub







    Τάσος Καραγιάννης

    Baby debugging steps...
  •  28-05-2007, 10:45 32264 σε απάντηση της 32232

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Δυστυχώς εξακολουθεί να μην δουλεύει....

    Φοβάμαι ότι το λάθος είναι στην function που έχω φτιάξει....

    function enableTextBox() {

    if (window.document.getElementById("ot_orders_add:chkOtherDoc").checked){

    window.document.getElementById("ot_orders_add:txtOtherDoc").disabled=false; }

    else {

    window.document.getElementById("ot_orders_add:txtOtherDoc").disabled=true; }

    }

    αλλά δεν μπορώ να εντοπίσω που ακριβώς....

    όπου ot_orders_add είναι το όνομα του user control.


    Hello world....
  •  28-05-2007, 11:10 32266 σε απάντηση της 32264

    Απ: VS2003 - Enable a textbox when a checkbox is checked

    Το client ID του textbox που χρησιμοποιείς δεν είναι το ίδιο με το server ID, γιατί το client ID προκύπτει από συνδυασμό του server ID του control με το client ID του container του, που μπορεί να είναι user control κλπ. Στην πραγματικότητα δεν μπορείς να "προβλέψεις" μέσα στη Javascript ποιο θα είναι το client ID, οπότε πρέπει να το δίνεις στην enableTextBox() σαν παράμετρο:

    function enableTextBox(checkBoxId, textBoxId)
    {
        if (document.getElementById(checkBoxId).checked)
            document.getElementById(textBoxId).disabled=false;
        else
            document.getElementById(textBoxId).disabled=true;
    }


    και να δημιουργείς την κλήση στην enableTextBox έτσι:

    CheckBox1.Attributes.Add( _
       "onClick", _
       string.Format("return enableTextBox({0}, {1});", CheckBox1.ClientID, TextBox1.ClientID))


    Για να ελέγχεις τη Javascript που γράφεις, και να κάνεις script debugging, ένα πολύ χρήσιμο εργαλείο είναι το Firebug, το καλύτερο ίσως addon του Firefox.

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