Περισσότερα
Πώς μπορώ να ελέγξω αν η συμβολοσειρά περιέχει υποσύνολο;
Έχω ένα καλάθι αγορών που εμφανίζει επιλογές προϊόντων σε ένα αναπτυσσόμενο μενού και αν επιλέξουν "ναι", θέλω να κάνω ορατά κάποια άλλα πεδία στη σελίδα.
Το πρόβλημα είναι ότι το καλάθι αγορών περιλαμβάνει επίσης τον τροποποιητή τιμής στο κείμενο, ο οποίος μπορεί να είναι διαφορετικός για κάθε προϊόν. Ο ακόλουθος κώδικας λειτουργεί:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Ωστόσο, θα προτιμούσα να χρησιμοποιήσω κάτι σαν αυτό, το οποίο δεν λειτουργεί:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Θέλω να εκτελέσω την ενέργεια μόνο εάν η επιλεγμένη επιλογή περιέχει τη λέξη "Ναι", και θα αγνοήσω τον τροποποιητή τιμής.
957
3
Όπως αυτό:
...ή μπορείτε να χρησιμοποιήσετε τον τελεστή tilde:
Αυτό λειτουργεί επειδή η
indexOf()
επιστρέφει-1
αν η συμβολοσειρά δεν βρέθηκε καθόλου.Σημειώστε ότι αυτό είναι ευαίσθητο στην πεζότητα.
Αν θέλετε μια αναζήτηση χωρίς ευαισθησία στην πεζότητα, μπορείτε να γράψετε
Ή,
Θα μπορούσατε να χρησιμοποιήσετε search ή match για αυτό.
str.search( 'Yes' )
θα επιστρέψει τη θέση της αντιστοιχίας, ή -1 αν δεν έχει βρεθεί.
Ένας άλλος τρόπος:
Δοκιμασμένο σε Firefox, Safari 6 και Chrome 36