Χρειάζεστε έναν καλύτερο τρόπο για να επικυρώσει ASP.NET πλαίσια ελέγχου χρησιμοποιώντας ένα plugin επικύρωση jQuery;

ψήφοι
3

Πρόβλημα:

Θέλω να επικυρώσει κάποια ASP.NET-πλαίσια ελέγχου χρησιμοποιώντας το plugin επικύρωση jQuery (που βρίσκεται στη διεύθυνση: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ )

Τι είναι όλα σχετικά με:

Δεν είναι δυνατό να οριστεί το όνομα του χαρακτηριστικού του ASP.NET πλαίσια ελέγχου (ή μήπως είναι;). Θα αυτόματα να ρυθμιστεί, όταν ο έλεγχος καθίσταται και μπορούν να ανακτηθούν με τη χρήση

<%= emailCheckBox.UniqueID %>

Έτσι, τα δύο πλαίσια ελέγχου ως εξής:

<asp:CheckBox runat=server ID=emailAcceptCheckBox />Email<br />
<asp:CheckBox runat=server ID=phoneAcceptCheckBox />Phone<br />

θα καταστήσει στο:

<INPUT id=ctl00_MainContentPlaceHolder_emailAcceptCheckBox type=checkbox name=ctl00$MainContentPlaceHolder$emailAcceptCheckBox>
<INPUT id=ctl00_MainContentPlaceHolder_phoneAcceptCheckBox type=checkbox name=ctl00$MainContentPlaceHolder$phoneAcceptCheckBox>

Ίσως είναι ένα χάος για να αναμειχθεί ASP.NET με το πρόγραμμα επικύρωσης jquery, αλλά εγώ προτιμώ το plugin επικύρωση jQuery και δουλεύει μια χαρά με εισόδους και σε άλλους τομείς.

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

Τι έκανα:

Πρόσθεσα έναν κανόνα για όλα τα πλαίσια ελέγχου με τη χρήση jQuery:

$(#[id*='AcceptCheckBox']).each(function() { $(this).rules(add, { minchecked: 1 }); });

Και πρόσθεσε τη δική μου κανόνα έλεγχο για πλαίσια ελέγχου:

jQuery.validator.addMethod(minchecked,
 function(value, element, param) {
     var noOfChecked = $(#[id*='AcceptCheckBox']:checked).length;
          return noOfChecked >= param;
     },
 Error);

(Ο κανόνας αυτός θα ισχύει για πλαίσια ελέγχου των οποίων οι ταυτότητες περιλαμβάνουν AcceptCheckBox, αλλά είναι εντάξει σε αυτό το παράδειγμα).

Όταν καλώ:

var result = $(#aspnetForm).validate().form();

Επιστρέφει τέλεια αν επικύρωση μου πέτυχε ή απέτυχε!

ΑΛΛΑ:

1) Δεν πιστεύω ότι αυτό είναι ένα πολύ καθαρό και ωραίο λύση. Κάθε καλύτερη συμβουλή;

2) Όταν τρέχω επικύρωση (). Μορφή () που θα περάσουν από όλα τα πλαίσια ελέγχου μου και για κάθε ένα από αυτά ελέγχει όλα τα άλλα πλαίσια ελέγχου. Αυτό δεν είναι πραγματικά απαραίτητο. Πώς μπορώ να αποφύγω αυτό;

Δημοσιεύθηκε 16/07/2009 στις 10:44
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Συνολικά, τον κωδικό σας φαίνεται μια χαρά για μένα. Νομίζω ότι έχετε καθαρά χειρίστηκε την asp: περιορισμός κουτάκι (δεν μπορείτε να ορίσετε το χαρακτηριστικό «όνομα» για asp: κουτάκι).

Προσωπικά, θα ήθελα να χρησιμοποιήσει την τακτική πλαίσιο ελέγχου HTML.

<input type="checkbox" runat="server" ID="emailAcceptCheckBox" name="acceptCheckBox" value="emailAccepted" /><label for="emailAcceptCheckBox">Email</label><br />
<input type="checkbox" runat="server" ID="phoneAcceptCheckBox" name="acceptCheckBox" value="phoneAccepted" /><label for="phoneAcceptCheckBox">Email</label><br />

(Έχω προσθέσει μια ετικέτα ετικέτα έτσι ώστε ο χρήστης μπορεί να κάνει κλικ στην ετικέτα (μεγαλύτερο στόχο) για να επιλέξετε / αποεπιλέξετε το πλαίσιο ελέγχου.)

Πάνω απ 'θα απλοποιήσει τον κωδικό σας jQuery.

Από την πλευρά του διακομιστή κωδικό σας, ελέγξτε Request.Form [ «acceptCheckBox»] για να δούμε τι έχει ελεγχθεί και τι δεν είναι.

Απαντήθηκε 16/07/2009 στις 17:49
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more