Изменить диалоговое окно JQuery или Google Maps Z-index - PullRequest
3 голосов
/ 26 января 2012

Я пытаюсь сделать что-то, что, на мой взгляд, должно быть довольно простым, но у меня ошибочные результаты. Я хочу открыть диалоговое окно и иметь в нем 2 поля адреса, которые используют функцию автозаполнения карт Google, чтобы предлагать местоположения на основе того, что пользователь ввел. Я могу получить поля для отображения «Введите местоположение», которое говорит мне, что вызов API Google Maps работает, но это не автоматическое заполнение адресов.

РЕДАКТИРОВАТЬ: ОК, я определил проблему. Раскрывающийся список мест находится за диалоговым окном и поэтому не виден. Так может кто-нибудь сказать мне, как изменить z-index либо диалогового окна query-ui и оверлея, либо выпадающего окна google maps?

Вот ссылка на образец, который я создал, поскольку на самом деле вам необходимо зарегистрироваться для использования сайта. http://google.backcountryride.com/dialog_google_test.php

Вот мой код: JQuery:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places,geometry&sensor=false"></script>
<script type="text/javascript">
$(function() {

var post = $( "#post<?php echo $instance ?>" ),
    role = $( "#role<?php echo $instance ?>" ),
    allFields = $( [] ).add( post ).add( role),
    tips = $( ".validateTips" );

function updateTips( t ) {
    tips
        .text( t )
        .addClass( "ui-state-highlight" );
    setTimeout(function() {
        tips.removeClass( "ui-state-highlight", 1500 );
    }, 500 );
}

function checkLength( o, n ) {
    if ( o.val().length < 1 ) {
        o.addClass( "ui-state-error" );
        updateTips( n + " cannot be blank." );
        return false;
    } else {
        return true;
    }
}

function checkRegexp( o, regexp, n ) {
    if ( !( regexp.test( o.val() ) ) ) {
        o.addClass( "ui-state-error" );
        updateTips( n );
        return false;
    } else {
        return true;
    }
}

$( "#carpool-request<?php echo $instance ?>" ).dialog({
    autoOpen: false,
    height: 400,
    width: 400,
    modal: true,
    buttons: {
        "Send Message": function() {
            var bValid = true;
            allFields.removeClass( "ui-state-error" );

            bValid = bValid && checkLength( post, "Your message" );
            bValid = bValid && checkLength( role, "Your role" );

            if ( bValid ) {
                //window.alert('All clear!');
                document.forms["send_message<?php echo $instance ?>"].submit(); 
                $( this ).dialog( "close" );
            }
        },
        Cancel: function() {
            $( this ).dialog( "close" );
        }
    },
    close: function() {
        allFields.val( "" ).removeClass( "ui-state-error" );
    }
});

$( "#carpool-send<?php echo $instance ?>" ).click(function() { 
    $( "#carpool-request<?php echo $instance ?>" ).dialog( "open" ); 
    $(".address-field").each (function (ix, item) {
        var defaultBounds = new google.maps.LatLngBounds(
            new google.maps.LatLng(41.0000, -110.0000),
            new google.maps.LatLng(44.000, -112.0000));
        var options = {
            bounds: defaultBounds,
            types: ['geocode']
            //types: ['establishment']
        };
        var autocomplete = new google.maps.places.Autocomplete ($(item).get(0), options);
    }); 
});
});
</script>

PHP для рендеринга формы:

<?php

//allow sending a message if not you
echo '<div id="carpool-request'.$instance.'" title="Request to join carpool">';
echo '<div id="dialog-form'.$instance.'">';
echo '<div id="dialog-form">';
echo '<p class="validateTips">All form fields are required.</p>';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="send_message'.$instance.'">';
echo '<fieldset>';
echo '<input type="hidden" id="subject'.$instance.'" name="subject" value="Join carpool request" class="text ui-widget-content ui-corner-all" />';
echo '<label>Please Provide Where You Will Be Traveling To and From</label>
      <label>Start Address:</label>
      <input type="text" class="address-field" id="address-start" name="addressStart" value="">
      <label>End Address:</label>
      <input type="text" class="address-field" id="address-end" name="addressEnd" value="">';
echo '<label>I am a </label>';
echo '<select name="role" size="1" id="role'.$instance.'" >';
echo '<option value="">Please Select</option>';
echo '<option value="D">Driver</option>';
echo '<option value="P">Passenger</option>';
echo '<option value="E">Either</option>';
echo '</select>';
echo '<label>Days you wish to join carpool</label>';
echo '<div id="days-week">';
echo Utility::carpoolDays($row_commuters['commuteId']);   
echo '</div>';
echo '<label>Will you pitch in for gas?</label>';
echo '<select name="gas" size="1" id="expenses" >';
echo '<option value="">Please Select</option>';
echo '<option value="Y">Yes</option>';
echo '<option value="N">No</option>';
echo '</select>';
echo '<label for="post" style="width:100%">Add a personal message</label>';
echo '<textarea name="post" id="post'.$instance.'" class="text ui-widget-content ui-corner-all" >';
if(isset($_POST['post'])) echo $_POST['post']; 
echo '</textarea>';
echo '<input type="hidden" name="driverId" value="' .$row_commuters['user_id'] . '" />';
echo '<input type="hidden" name="commuteId" value="' .$row_commuters['commuteId'] . '" />';
echo '<input type="hidden" name="tab" value="commute" />';
echo '<input type="hidden" name="process_carpool_request" value="process" />';
echo '</fieldset>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '<a href="javascript:void()" id="carpool-send'.$instance.'">Ask to join this carpool</button>';
echo '<br/>';
?>

Заранее спасибо за помощь!

1 Ответ

16 голосов
/ 31 января 2012

Итак, я выяснил, к какому классу относится div, который включает выпадающий список, и добавил его в свой css-файл:

.pac-container {
    z-index: 1200 !important;
}

pac-container - это класс div, применяемый Google Maps для его удаления.вниз списки для автоконкурентов.С помощью модификатора! Important я смог отменить стиль элемента и установить z-индекс выше, чем z-индекс, установленный пользовательским интерфейсом для его диалоговых окон.

...