Aquí es todo el código que he intentado:window.open() no funciona en Safari móvil web-app añadido a la pantalla principal
select:function(event, ui) {
window.open(ui.item.value, "_blank");
}
select:function(event, ui) {
window.location.href = ui.item.value;
}
En el modo de aplicación web, la pantalla de tan solo se actualiza, no va a la ubicación. En Mobile Safari, funciona según lo previsto.
¿Es esto una limitación con las aplicaciones web en iPhone? ¿Hay alguna forma de evitarlo?
Aquí está el código completo:
<script>
$(document).ready(function() {
var cct = $('input[name=csrf_token]').val();
var searchInput = $('input[name=search]');
function loadEventsData(onSuccess){
$.ajax({
type: 'POST',
url: '<?php echo site_url('ajax_frontend/getEventsSearch'); ?>',
dataType: 'json',
success: onSuccess,
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); }
});
}
function initializeEventsAutocomplete(data){
searchInput.addClass('loaded').autocomplete({
source:data,
appendTo: '.search_autocomplete',
minLength:2,
delay:0,
selectFirst:false,
open: function(event, ui) {
$('ul.events').hide();
$('.ui-autocomplete').removeAttr('style');
$('.icon-search').hide();
$('.icon-close').show();
},
close: function(event, ui) {
val = searchInput.val();
searchInput.autocomplete("search", val);
searchInput.focus();
return false;
},
select:function(event, ui) {
window.location.href = ui.item.value;
return false;
}
});
}
$('form').submit(function(e) {
e.preventDefault();
searchInput.blur();
});
searchInput.keyup(function(){
if($(this).is(".loaded")) return;
loadEventsData(initializeEventsAutocomplete);
});
$('.icon-close').click(function(e) {
e.preventDefault();
$(this).hide();
$('.icon-search').show();
searchInput.autocomplete('close');
$('ul.events').show();
searchInput.val('');
});
});
</script>
y aquí está el JSON (algunos de ellos):
[{"value":"http:\/\/events.dev\/index.php\/event\/canada-day","label":"Canada Day"},{"value":"http:\/\/events.dev\/index.php\/event\/triathlon-festival","label":"Triathlon Festival"}]
¿Estás seguro que no es un problema con el 'select: function' llamarse a sí misma? Si hace otro poco de JavaScript en lugar de abrir una ventana, ¿funciona? – ceejayoz
Parece que tienes razón. Lo pongo fuera de 'select: function' y funciona. Pero todavía lo necesito allí, desafortunadamente. Estoy usando el autocompletado de jQuery UI. ¿Alguna idea de lo que podría detenerlo y cómo superarlo? – dallen
¿Puedes mostrar la totalidad de la llamada de autocompletar? Supongo que es algo simple que te perdiste, pero sin el código que es difícil de decir con certeza. – ceejayoz