Je dois désactiver le style de la liste déroulante <select>
de jQuery Mobile. En fin de compte, j'aimerais que l'appareil lui-même (iPhone, Android, Blackberry, etc.) détermine l'aspect de la liste déroulante <select>
.
Actuellement, mon marquage est (quantité d'option réduite pour l'affichage):
<div data-role="fieldcontain">
<label for="state">State:</label>
<select name="state" id="state" data-role="none">
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN" selected="selected">Minnesota</option>
<option value="MS">Mississippi</option>
</select>
</div>
J'ai essayé d'utiliser data-role="none"
sur le <select>
mais rien n'a changé.
Existe-t-il un moyen de "désactiver" jQuery Mobile uniquement pour le menu déroulant de sélection?
selon http://jquerymobile.com/test/docs/forms/docs-forms.html
Si vous préférez que jQuery Mobile ne modifie pas un contrôle de formulaire particulier, attribuez simplement à cet élément l'attribut data-role = "none". Par exemple:
<label for="foo">
<select name="foo" id="foo" data-role="none">
<option value="a" >A</option>
<option value="b" >B</option>
<option value="c" >C</option>
</select>
Depuis la version 1.1, la bonne façon de le faire est: data-enhance="false"
Vous devrez également ajouter cette ligne à config:
$.mobile.ignoreContentEnabled = true;
http://jquerymobile.com/test/docs/forms/forms-all-native.html
Bien que cette question fasse déjà l’objet d’une réponse, j'aimerais ajouter quelques lignes supplémentaires, car la réponse n’a pas fonctionné de manière «prête à l’emploi» pour moi, ce qui pourrait faire gagner du temps à d’autres.
Dans mon cas, je désactive les menus déroulants natifs pour une application pour smartphone lorsqu’elle s’exécute sous Android (puisqu’il a quelques problèmes déplaisants lors de l’ouverture de menus déroulants natifs, déjà signalé dans un autre fil). Le "sortilège" qui m'a résolu le problème n'est que les lignes suivantes:
$(document).bind('mobileinit',function(){
if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
$("select").attr("data-native-menu","true");
} else {
$("select").attr("data-native-menu","false");
$.mobile.selectmenu.prototype.options.nativeMenu = false;
}
});
Ces lignes sont dans un script de personnalisation chargé juste après jQuery et juste avant jQuery-Mobile. Il est important de garder l'ordre , sinon les commandes sont déjà initialisées et cela n'a aucun effet!
J'espère que ce conseil peut faire gagner du temps à quelqu'un!
Dans mobileinit, corrigez le sélecteur jQM pour qu'il se comporte comme prévu:
$.mobile.selectmenu.prototype.options.initSelector = 'select:not( :jqmData(role="none"), :jqmData(role="slider") )';
L'utilisation de cette propriété devrait aider
$.mobile.selectmenu.prototype.options.nativeMenu = true; // in your override file...
essayez juste data-native-menu="true"
from doc: En ajoutant l'attribut data-native-menu = "true" à select, le framework utilisera le menu de sélection natif du navigateur lorsque l'utilisateur cliquera sur le bouton de sélection. Comme cette option n’utilise aucune logique d’analyse de menu personnalisée ni de génération de menu, elle est bien plus rapide que la version de menu personnalisé. Les menus de sélection personnalisés permettent de thématiser la sélection et d’assurer la cohérence visuelle entre les plates-formes. En outre, il corrige certaines fonctionnalités manquantes sur certaines plates-formes: prise en charge optgroup sur Android, fonctionnalité de sélection multiple sur WebOS et ajoute un moyen élégant de gérer les valeurs d'espace réservé.
Ils travaillent encore dessus, ils fonctionnent dans le dernier code git mais je ne le recommanderais pas: https://github.com/jquery/jquery-mobile/issuesearch?state=closed&q=select#issue/ 350
Oui, vous devez accéder au fichier CSS qui contrôle le style de liste déroulante JQuery Mobile UI et supprimer tout style que vous ne souhaitez pas afficher.