La sélection de texte mis au point à l’aide de jQuery ne fonctionne pas dans les navigateurs iPhone iPad

Nous développons Web-App pour les navigateurs mobiles, nous aimerions que le texte de toute zone de saisie soit sélectionné chaque fois que la zone de saisie est activée. La réponse ci-dessous résout le problème du navigateur Desktop chrome / safari. La solution ci-dessous fonctionne très bien sur le navigateur Android, mais pas sur les navigateurs iPhone / iPad, aucune solution ..

$("#souper_fancy").focus(function() { $(this).select() }); $("#souper_fancy").mouseup(function(e){ e.preventDefault(); }); 

Réf: –

La sélection de texte mis au point à l’aide de jQuery ne fonctionne pas dans Safari et Chrome

La réponse trouvée ici ne sait pas comment marquer cette question en double. Sélection par programme du texte dans un champ de saisie sur les appareils iOS (Safari mobile)

Mon correctif ressemble à ceci: –

  

Peut-être essayez ceci:

vmousous
Evénement normalisé pour la gestion d’événements tactiles ou de souris

JS:

 $("#souper_fancy").focus(function() { $(this).select(); }); $("#souper_fancy").vmouseup(function(e){ e.preventDefault(); }); 

Vous pouvez utiliser document.execCommand('selectAll'); . Cependant, si l’utilisateur fait défiler la page, le menu copier / coller sera affiché.

C’est ce que j’utilise:

 function trySelect(el, evenInactive, select_ios) { var select = function() { try { if (mojo.isTouch && select_ios && core.iosDevice && mojo.isInput(el) && document.execCommand) { document.execCommand('selectAll'); } else { el.select(); } } catch (e) { } }; if (el && el.select && !el.disabled && (!el.readOnly || el.selectReadOnly) && mojo.isInput(el)) { if (evenInactive || mojo.activeElement() === el) { if (mojo.isTouch && core.webkitVer) { // http://code.google.com/p/chromium/issues/detail?id=32865 setTimeout(select, 0); } else { select(); } } } } 

Cela fait référence à certaines fonctions internes:

  • mojo.isTouch – vrai pour un appareil tactile
  • core.iosDevice – true pour un périphérique iOS
  • mojo.isInput – teste un élément d’entrée
  • mojo.activeElement () – document.activeElement

edit: document.execCommand('selectAll'); ne doit pas être utilisé et el.setSelectionRange(0, el.value.length); utilisé à la place. Cela semble fonctionner correctement sur iOS5 … Cela risque de ne pas fonctionner sur iOS4 (je n’ai pas d’appareil iOS4 à tester).

Celui-ci fonctionne pour moi.

  $("input[type='text'],select,textarea").focus(function () { $(this).addClass('text-focus'); }); $("input[type='text'],select,textarea").blur(function () { $(this).removeClass('text-focus'); }); .text-focus { border: 1px solid #ea9a00; }