2016-07-23 2 views
0

Я интегрируюиз these dropdown effects в свой проект. Я хочу составить список стран, и когда посетитель выбирает его, он отправит его на страницу. Проблема в том, что событие onChange() не будет работать, когда dropdown.js находится в миксе.CoDrops dropdown onChange событие не будет работать

Я попытался с

onChange='this.form.submit()" 

И

onChange='sendForm()" 
... 
<script type="text/javascript"> 
function sendForm() { 
    document.getElementById("destination-select").submit(); 
} 
</script> 

Оба работают, если удалить dropdown.js, но очевидно, что эффект теряется.

форма

<form id="destination-select" action="/" method="get"> 
    <select name="destination" id="cd-dropdown" class="cd-select" onchange="sendForm()"> 
     <option value="-1" selected>Destination</option> 
     <option value="argentina" class="icon-argentina">Argentina</option> 
     <option value="brazil" class="icon-brazil">Brazil</option> 
     <option value="spain" class="icon-spain">Spain</option> 
     <option value="more " class="icon-more">See more</option> 
    </select> 
</form> 

UPDATE

Как @Amit отметил, что есть метод onOptionSelect(), я использовал его и найти, работает. Проблема в том, что он не извлекает выбранную опцию. Также onChange = "sendForm()" или onChange = "this.form.submit()". Я даже пытался подделать кнопку клика с помощью метода .click(). Есть идеи? Благодаря!

немного кода:

<form id="destination-select" action="/" method="get"> 
    <select name="destination" id="cd-dropdown" class="cd-select" > 
     <option value="-1" selected disabled>Destination</option> 
     <option value="argentina" class="icon-argentina">Argentina</option> 
     <option value="brazil" class="icon-brazil">Brazil</option> 
     <option value="spain" class="icon-spain">Spain</option> 
     <option value="more" class="icon-more">See more</option> 
    </select> 
</form> 

Javascript:

$(function() { 
    $('#cd-dropdown').dropdown({ 
     gutter : 5, 
     delay : 100, 
     random : true, 
     onOptionSelect: function(opt){ 
      sendForm(); 
     } 
    }); 
}); 

sendForm()

function sendForm() { 
      document.getElementById('destination-select').submit(); 
     } 

Результат всегда является: url.dev/?destination=-1

ответ

1

Убедитесь, что у вас есть функция sendForm() ион, определенный перед вашим html. Если это не поможет, то

В раскрывающемся плагине jquery вы используете параметр конфигурации onOptionSelect. Вы можете передать функцию этому параметру, который получит выбранный параметр в качестве параметра.

$("#cd-dropdown").dropdown(
    onOptionSelect: function(opt){ 
     // you can call your sendForm() here 
    } 
); 
+0

ОК, onOptionSelect работает просто отлично. Но теперь проблема заключается в том, что она устанавливает выбранную опцию «-1». Я имею в виду, что он не извлекает выбранную опцию, а параметр по умолчанию для раскрывающегося списка. Я пробовал: 'document.getElementById ('destination-select'). Submit();' в onOptionSelect. Я также попытался вызвать метод sendForm() и даже подделка кнопки отправки нажатием кнопки click(). Все с одинаковым результатом: url? Destination = -1 // - 1 - значение по умолчанию –

+1

@JorgeAnzola Проверьте это https://gist.github.com/amitonkare/fcb9e8ea55050f29b1708612d0f2b247 Он работает и предупреждает выбранную опцию. – Amit

+0

Гений! Это очень помогло мне. У меня все еще были проблемы с формой, но теперь, когда вы решили, как получить страны, я мог бы сделать что-то вроде 'window.location.replace ("? Destination = "+ destination);' и он работает. Я не знаю, была ли это плохая практика или что-то еще, но работала. Благодаря! –

Смежные вопросы