J'ai six valeurs d'option de la table de base de données similaires à celle-ci: #blog et #hariciURL et #portfolio bla bla bla similaires comme ceci.
J'ai une autre table qui a ces valeurs, je vérifie si les mêmes valeurs dans le tableau La valeur de l'option sera désactivée mais sauf la valeur de l'option #hariciURL ne sera jamais désactivée.
Comment puis-je exclure #hariciURL non désactivé de ce menu d'options? veuillez vérifier les codes, vous pouvez comprendre ce que je veux dire.
désolé, mon mauvais anglais.
$('#degeriAL option').each(function() { var BolumleriAl = $(this).val(); var seolink = "<?php echo $BolumVarmiSorgula->seolink;?>"; var bolumisimleri = $('#degeriAL option[name]'); var Exclude = "#hariciURL"; //this will be never disabled if (jQuery.inArray(seolink, BolumleriAl)) { $('#degeriAL option[value="' + seolink + '"]').prop("disabled", true).addClass("secimMenusuDisabled").addClass(".secimMenusuDisabled" + "(that already exist, you can not add more than one)").nextAll(); } });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="degeriAL" name="bolumLink" class="form-control form-control-sm" required=""> <option value="" required="">Bölüm Seçiniz...</option> <option value="#featured-services"> DiÄer Hizmetler </option> <option value="#about"> Hakkımızda </option> <option value="#services"> Hizmetler </option> <option value="#call-to-action"> Tıklama Eylemi </option> <option value="#blog"> Blog </option> <option value="#skills"> Yatay Ä°statistik Ãizelgesi </option> <option value="#facts"> Rakamsal Ä°statistik </option> <option value="#portfolio"> Ãrünler </option> <option value="#clients"> Referansların Logoları </option> <option value="#testimonials"> MüÅteri GörüÅleri </option> <option value="#team"> Bizim Takım & ÃalıÅanlar </option> <option value="#contact"> Ä°letiÅim / Form / Harita </option> <option value="#hariciURL"> Harici Link </option> </select>
$().ready(function() { $('#degeriAL option').each(function() { // option menüsündeki tüm deÄerleri al //console.log(BolumleriAl); var BolumleriAl = $(this).val(); // tüm valuelerini bir deÄiÅkene ata var seolink = ("#services", "#hariciURL"); //var seolink = "<?php echo $BolumVarmiSorgula->seolink;?>"; // this original code come from database. console.log(seolink); var bolumisimleri = $('#degeriAL option[name]'); var exclude = "#hariciURL"; //this will be never disabled if ($.inArray(seolink, BolumleriAl) && BolumleriAl !== exclude) { // iki dizi içinde eÅleÅen varmı diye bak $('#degeriAL option[value="' + seolink + '"]').prop("disabled", true).addClass("secimMenusuDisabled").addClass(".secimMenusuDisabled" + "(bölüm mevcut)").nextAll(); //option menüdeki dizi içinde olan tüm deÄerlerini veritabanından gelenlerle karÅılaÅtır ve eÅleÅenleri option menü içinden disabled yap } }); });
3 Réponses :
Vous parcourez les options en boucle, vous pouvez donc simplement vérifier si la valeur de l'option, BolumleriAl
, n'est pas celle exclue.
En outre, vous pouvez déplacer les variables seolink et Exclude hors de la boucle, car ceux-ci ne changent pas à chaque fois.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="degereriAL" size="8"> <option value="https://example.com">Test</option> <option value="#hariciURL">Test 2</option> <option value="test3">Test 3</option> <option value="test4">Test 4</option> <option value="test5">Test 5</option> <option value="test6">Test 6</option> <option value="test7">Test 7</option> <option value="test8">Test 8</option> </select>
select { min-width: 10em; } select option[disabled] { color: #eee; }
var seolink = "https://example.com"; var Exclude = "#hariciURL"; //this will be never disabled var Bölümler = ['test3', 'test7']; $('#degereriAL').children('option').each(function() { var currentValue = $(this).val(); if (currentValue == Exclude || $.inArray(currentValue, Bölümler) > -1) { // The value is excluded (#hariciURL) // OR the value is in the Bölümler array } else { $(this) .prop("disabled", true) .addClass("secimMenusuDisabled"); } });
#hariciURL est toujours en train de désactiver, pas les codes de travail désolé.
@DoganOzer: J'ai ajouté un exemple fonctionnel. Peut-être que vous pouvez l'utiliser pour découvrir pourquoi cela ne fonctionne pas?
Bonjour, merci pour la réponse et l'aide, mais je l'ai corrigé il y a longtemps, merci encore.
Ce que vous voulez probablement, c'est
liens secondaires
semblent être une chaîne, vous devez les diviser
pour qu'ils deviennent un tableau. BolumleriAl
n'est pas le même que le Exclude
seolinks
et si oui, désactivez-le option
donc pas besoin d'utiliser un sélecteur pour trouver l'élément à désactiver. Utilisez simplement ceci
.
$('#degeriAL option').each(function() { var BolumleriAl = $(this).val(); var seolink = "<?php echo $BolumVarmiSorgula->seolink;?>".split(' '); var Exclude = "#hariciURL"; //this will be never disabled if (BolumleriAl !== Exclude && $.inArray(BolumleriAl, seolink) > -1) { $(this).prop("disabled", true) .addClass("secimMenusuDisabled") //.addClass(".secimMenusuDisabled" + "(that already exist, you can not add more than one)"); } });
Je pense que mon erreur est de ne pas créer de tableau, ai-je tort?
@DoganOzer l'un des problèmes était que, oui.
D'après ce que j'ai compris de votre question, je pense que votre condition if a été inversée.
De plus, vous devez utiliser la valeur donnée par la fonction $ .each
var seolink = "<?php echo $BolumVarmiSorgula->seolink;?>"; var Exclude = "#hariciURL"; //this will be never disabled $('#degeriAL option').each(function(i,v) { Exclude = v != Exclude && $.inArray(seolink, v) ? $('#degeriAL option[value="' + seolink + '"]').prop("disabled", true).addClass("secimMenusuDisabled").text('that already exist, you can not add more than one') : "#hariciURL"; });
p>
Pourriez-vous simplement inclure une condition supplémentaire à votre instruction if telle que if (jQuery.inArray (seolink, BolumleriAl && $ (this) .id! == Exclude)) Je suppose que 'Exclude' fait référence à l'ID de l'option ici bien que.
Ou simplement supprimer l'élément qui ne sera jamais désactivé de votre éventail de choses à désactiver? Si vous pouviez faire cela juste côté client (mettez quelques exemples de données pour votre écho PHP si vous le pouvez) et montrez-nous l'élément
select
, cela aiderait à clarifier la question.Le code est faux.
$ .inArray
attend une chaîne et un tableau, et votre code passe deux chaînes. Cela signifie qu'il retournera toujours -1, ce qui est vrai, donc tout sera désactivé. Afficher ce que contientseolink
et afficher le html rendu du#degeriAL
il s'agit des valeurs seolink: #hariciURL #services
@DoganOzer publie le script rendu pas celui avec
php
. Nous devons voir à quoi ressemble le script dans votre navigateur.J'ai édité mon haut principal de message, j'y ai ajouté.
@DoganOzer bien. Pouvez-vous faire de même pour le script?
Comme mentionné par Gabriele Petrioli,
inArray ()
ne renvoie pas de booléen. Il renvoie [-1, 0, ..., n-1] où -1 n'est pas trouvé. Votre conditionnel devra vérifier que la valeur n'est pas -1 pour savoir qu'elle a été trouvée.J'ai édité mes meilleurs messages, mais juste la dernière valeur désactivée, les variables normales proviennent de la base de données et cela fonctionne normalement. mais voici pourquoi juste le dernier élément désactivant je ne comprends pas.
@DoganOzer
("#services", "#hariciURL")
n'est pas un tableau. Les tableaux sont indiqués par[]
et non par()
. De plus,var seolink = " Php echo $ BolumVarmiSorgula-> seolink;?>"
ne peut jamais être rendu commevar seolink = ("#services", "#hariciURL")
car il y a"
autour de lui dans la version php qui ne s'affiche pas dans la version rendue.@Gabriele Petrioli merci pour l'avis, je vois maintenant. au revoir.