


Comment mettre en œuvre le chargement par clic de régions à cinq niveaux à travers le pays dans le plug-in d'arborescence zTree
Ci-dessous, je partagerai avec vous un exemple d'utilisation du plug-in d'arborescence zTree pour implémenter le chargement par clic dans des régions à cinq niveaux à travers le pays. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde.
Dans la fonction de projet, le lieu de résidence et la résidence actuelle doivent être saisis. Afin de réduire la quantité de saisie de l'utilisateur, le plug-in d'arborescence sera utilisé pour sélectionner les régions à cinq niveaux à travers le pays. pays + la zone de saisie pour saisir l'adresse détaillée. Le plug-in d'arborescence zTree est utilisé en premier ici. Pour une utilisation et une étude futures, les enregistrements pertinents sont créés ici. Bien entendu, il est essentiel de se référer aux articles des dieux majeurs lors du processus de mise en œuvre, et vous pourrez résoudre rapidement les problèmes en fonction de vos besoins réels.
Présentation du site officiel du plug-in d'arbre ZTree
zTree est un "plug-in d'arbre" multifonctionnel implémenté par jQuery. D'excellentes performances, une configuration flexible et une combinaison de plusieurs fonctions sont les plus grands avantages de zTree.
Adresse du site officiel du plug-in d'arbre zTree
http://www.treejs.cn/v3/main.php#_zTreeInfo
Fonction code d'implémentation
Structure de base de la table de région de la base de données :
regionType 地区级别 path 地区编码 name 地区名称 parentRegion 上级地区
Code de la page :
<!-- 户籍地、现居住地 --> <tr> <td colspan="3"> <p class="form-group"> <label style="display: block;">户籍地</label> <input type="hidden" name="domiciliary" id="domiciliary"> <input type="text" class="form-control" style="width:300px;float:left;" id="domiciliary-text" value="" onclick="showRegion('domiciliary')" placeholder="点击选择地区" maxlength="20" readonly="readonly"> <input type="text" class="form-control" style="width:320px;float:left;" name="domiciliaryAddress" value="" placeholder="详细地址" maxlength="100"> </p> </td> </tr> <tr> <td colspan="3"> <p class="form-group"> <label style="display: block;">现居住地址</label> <input type="hidden" name="bide" id="bide"> <input type="text" class="form-control" style="width:300px;float:left;" id="bide-text" value="" onclick="showRegion('bide')" placeholder="点击选择地区" maxlength="20" readonly="readonly"> <input type="text" class="form-control" style="width:320px;float:left;" name="bideAddress" value="" placeholder="详细地址" maxlength="100"> </p> </td> </tr> <!-- bootstrap 模态框(Modal) --> <p class="modal fade" id="regionModal" tabindex="-1" role="dialog" aria-hidden="true"> <input type="hidden" id="regionModalType" /> <p class="modal-dialog"> <p class="modal-content"> <p class="modal-body"> <!-- zTree 的容器 --> <ul id="treeRegion" class="ztree"></ul> </p> <p class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button type="button" class="btn btn-primary" onclick="confimRegion()">确认</button> </p> </p> </p> </p>
Effet :
Code js :
$(document).ready(function() { // zTree 参数配置 var setting = { view: { showIcon: false,//是否显示节点的图标 selectedMulti: false //设置是否允许同时选中多个节点。默认值: true。 }, data: { simpleData: { enable: true, //是否采用简单数据模式 (Array)。默认值:false idKey: "path", //节点数据中保存唯一标识的属性名称。 pIdKey: "parentRegion", //节点数据中保存其父节点唯一标识的属性名称。 rootPid: "10000000000000" //用于修正根节点父节点数据,即 pIdKey 指定的属性值。 } }, callback: { // 用于捕获节点被点击的事件回调函数 onClick: function(event, treeId, treeNode, clickFlag) { var treeObj = $.fn.zTree.getZTreeObj(treeId); //根据 treeId 获取 zTree 对象 // 这里判断节点被点击时,如果有已经加载下级节点,则不用请求服务器 if((treeNode.children == null || treeNode.children == "undefined")){ if(!$("#"+treeNode.tId+"_switch").hasClass("center_docu") && !$("#"+treeNode.tId+"_switch").hasClass("bottom_docu")){ // 请求服务器,获得点击地区的下级地区 $.ajax({ type: "get", async: false, url: "tRegion/ajaxArea", data:{ path:treeNode.path }, dataType:"json", success: function(data){ if(data != null && data.length != 0){ //添加新节点 var newNodes = treeObj.addNodes(treeNode, data); $(newNodes).each(function(i,n){ var id = n.tId+"_switch"; if($("#"+id).hasClass("center_docu")){ $("#"+id).removeClass("center_docu"); $("#"+id).addClass("center_close"); } if($("#"+id).hasClass("bottom_docu")){ $("#"+id).removeClass("bottom_docu"); $("#"+id).addClass("bottom_close"); } }); }else{ var id = treeNode.tId+"_switch"; if($("#"+id).hasClass("center_close")){ $("#"+id).removeClass("center_close"); $("#"+id).addClass("center_docu"); } if($("#"+id).hasClass("bottom_close")){ $("#"+id).removeClass("bottom_close"); $("#"+id).addClass("bottom_docu"); } } }, error:function(event, XMLHttpRequest, ajaxOptions, thrownError){ result = true; toastr.error("请求失败!"); } }); } }else{ // 展开当前节点 treeObj.expandNode(treeNode); } } } }; // 显示区域树,加载顶级节点 $.ajax({ type: "get", url: "tRegion/ajaxArea", data: {path:"10000000000000"}, success: function(data, status) { if (status == "success") { // 初始化区域树 $.fn.zTree.init($("#treeRegion"), setting, data); // 获得zTree对象 var treeObj = $.fn.zTree.getZTreeObj("treeRegion"); // 获得初始化的所有节点,即顶级节点 var nodes = treeObj.getNodes(); $(nodes).each(function(i,n){ var id = n.tId+"_switch"; if($("#"+id).hasClass("roots_docu")){ $("#"+id).removeClass("roots_docu"); $("#"+id).addClass("roots_close"); } if($("#"+id).hasClass("center_docu")){ $("#"+id).removeClass("center_docu"); $("#"+id).addClass("center_close"); } if($("#"+id).hasClass("bottom_docu")){ $("#"+id).removeClass("bottom_docu"); $("#"+id).addClass("bottom_close"); } }); } }, error : function() { toastr.error('Error'); }, }); }); function showRegion(type){ // 显示模态框 $('#regionModal').modal('show'); $("#regionModalType").val(type); } // 选择地区确认 function confimRegion(){ var type = $("#regionModalType").val(); var treeObj = $.fn.zTree.getZTreeObj("treeRegion"); var node = treeObj.getSelectedNodes(); //选中节点 var regionType = node[0].regionType; if(Number(regionType) >= 5){ $("#"+type+"-text").val(node[0].name); $("#"+type).val(node[0].path); $('#regionModal').modal('hide'); } }
Effet de réussite :
J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.
Articles associés :
Comment obtenir l'effet d'animation consistant à rebondir sur le bord dans jQuery ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Dans iOS 17, vous pouvez définir plusieurs minuteries sur votre iPhone à l'aide de l'application Horloge ou utiliser Siri pour le régler en mode mains libres. Nous discutons des deux dans cet article. Jetons un coup d'oeil à eux. Définir plusieurs minuteries sur iPhone à l'aide de l'application Horloge Ouvrez l'application Horloge sur votre iPhone et appuyez sur l'onglet Minuteries dans le coin inférieur droit. Maintenant, réglez les heures, les minutes et les secondes. Vous pouvez utiliser les options « Étiquette » et « Quand la minuterie se termine-t-elle » pour définir un nom pour la minuterie et une tonalité préférée lorsque la minuterie se termine. Cela vous aidera à différencier les minuteries. Une fois terminé, cliquez sur le bouton "Démarrer". Ensuite, cliquez sur l'icône "+" dans le coin supérieur droit. Maintenant, répétez les étapes ci-dessus pour définir plusieurs minuteries sur iPhone. Vous pouvez également parcourir
![Erreur de chargement du plugin dans Illustrator [Corrigé]](https://img.php.cn/upload/article/000/465/014/170831522770626.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Lors du lancement d'Adobe Illustrator, un message d'erreur de chargement du plug-in apparaît-il ? Certains utilisateurs d'Illustrator ont rencontré cette erreur lors de l'ouverture de l'application. Le message est suivi d'une liste de plugins problématiques. Ce message d'erreur indique qu'il y a un problème avec le plug-in installé, mais il peut également être provoqué par d'autres raisons telles qu'un fichier DLL Visual C++ endommagé ou un fichier de préférences endommagé. Si vous rencontrez cette erreur, nous vous guiderons dans cet article pour résoudre le problème, alors continuez à lire ci-dessous. Erreur de chargement du plug-in dans Illustrator Si vous recevez un message d'erreur « Erreur de chargement du plug-in » lorsque vous essayez de lancer Adobe Illustrator, vous pouvez utiliser les éléments suivants : En tant qu'administrateur

Les sous-titres ne fonctionnent pas sur Stremio sur votre PC Windows ? Certains utilisateurs de Stremio ont signalé que les sous-titres n'étaient pas affichés dans les vidéos. De nombreux utilisateurs ont signalé avoir rencontré un message d'erreur indiquant « Erreur de chargement des sous-titres ». Voici le message d'erreur complet qui apparaît avec cette erreur : Une erreur s'est produite lors du chargement des sous-titres. Échec du chargement des sous-titres : Cela pourrait être un problème avec le plugin que vous utilisez ou avec votre réseau. Comme l’indique le message d’erreur, il se peut que ce soit votre connexion Internet qui soit à l’origine de l’erreur. Veuillez donc vérifier votre connexion réseau et vous assurer que votre Internet fonctionne correctement. En dehors de cela, il peut y avoir d'autres raisons derrière cette erreur, notamment un module complémentaire de sous-titres conflictuels, des sous-titres non pris en charge pour un contenu vidéo spécifique et une application Stremio obsolète. comme
![Comment configurer ma carte de visite dans Contacts sur iPhone [2023]](https://img.php.cn/upload/article/000/465/014/169538863364905.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Avec Mes cartes de visite dans iOS, vous pouvez créer une carte de contact personnalisée que Siri et d'autres services reconnaissent et associent à vous et à votre numéro de téléphone. Avec l'introduction des affiches de contact dans iOS17, Mes cartes deviennent très importantes car elles sont désormais utilisées pour créer vos affiches de contact. Si vous avez hâte de mettre en place votre affiche de contact, vous devez commencer par configurer Ma carte de visite. Nous expliquerons comment créer une carte de visite Ma carte de visite et comment la faire fonctionner correctement avec Siri et votre affiche de contact. Comment configurer mes cartes de visite dans les contacts sur iPhone [2023] Si vous configurez mes cartes de visite sur votre iPhone pour la première fois, vous devez le faire via l'application Contacts uniquement.

Comment créer une liste d'épicerie sur iPhone sous iOS17 Créer une liste d'épicerie dans l'application Rappels est très simple. Il vous suffit d'ajouter une liste et de la remplir avec vos éléments. L'application trie automatiquement vos articles en catégories et vous pouvez même travailler avec votre partenaire ou partenaire d'appartement pour dresser une liste de ce que vous devez acheter dans le magasin. Voici les étapes complètes pour ce faire : Étape 1 : activer les rappels iCloud Aussi étrange que cela puisse paraître, Apple dit que vous devez activer les rappels d'iCloud pour créer une liste d'épicerie sur iOS17. Voici les étapes à suivre : Accédez à l'application Paramètres sur votre iPhone et appuyez sur [votre nom]. Ensuite, sélectionnez je
![Comment désactiver les alarmes sur iPhone [2023]](https://img.php.cn/upload/article/000/465/014/169259550735100.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Depuis l’avènement des smartphones, ils ont sans doute remplacé les réveils. Si vous possédez un iPhone, vous pouvez utiliser l'application Horloge pour définir facilement autant d'alarmes à plusieurs reprises tout au long de la journée. L'application vous permet de configurer l'heure de l'alarme, la tonalité, la fréquence de répétition et si vous souhaitez les retarder à l'aide de l'option Snooze. Si vous souhaitez désactiver l'alarme que vous avez définie, l'article suivant devrait vous aider à désactiver et supprimer les alarmes régulières et les alarmes de réveil sur votre iPhone. Comment désactiver une alarme régulière sur iPhone Par défaut, lorsque vous ajoutez une alarme sur l'application Horloge ou demandez à Siri d'ajouter une alarme pour vous, vous créez en fait une alarme normale. Vous pouvez créer autant de réveils sur votre iPhone que vous le souhaitez et les mettre

Avec le développement d'Internet, de plus en plus de pages Web doivent prendre en charge le chargement par défilement, et le chargement par défilement infini en fait partie. Il permet à la page de charger continuellement du nouveau contenu, permettant ainsi aux utilisateurs de naviguer sur le Web plus facilement. Dans cet article, nous présenterons comment implémenter le chargement par défilement infini à l'aide de PHP. 1. Qu'est-ce que le chargement par défilement infini ? Le chargement par défilement infini est une méthode de chargement de contenu Web basée sur des barres de défilement. Son principe est que lorsque l'utilisateur fait défiler vers le bas de la page, les données d'arrière-plan sont récupérées de manière asynchrone via AJAX pour charger en continu du nouveau contenu. Ce type de méthode de chargement

Si vous rencontrez des problèmes de blocage lors de l'insertion de liens hypertexte dans Outlook, cela peut être dû à des connexions réseau instables, à d'anciennes versions d'Outlook, à des interférences provenant d'un logiciel antivirus ou à des conflits de compléments. Ces facteurs peuvent empêcher Outlook de gérer correctement les opérations de liens hypertexte. Corriger le blocage d'Outlook lors de l'insertion d'hyperliens Utilisez les correctifs suivants pour corriger le blocage d'Outlook lors de l'insertion d'hyperliens : Vérifiez les compléments installés Mettre à jour Outlook Désactivez temporairement votre logiciel antivirus, puis essayez de créer un nouveau profil utilisateur Réparer le programme des applications Office Désinstaller et réinstaller Office Commençons. 1] Vérifiez les compléments installés. Il se peut qu'un complément installé dans Outlook soit à l'origine du problème.
