JQuery UI selectmenu - Как сбросить выпадающий на кнопку сброса формы - PullRequest
3 голосов
/ 10 июня 2011

У меня проблема с jQuery.selectmenu, когда я нажимаю кнопку сброса, я хочу, чтобы он сбрасывался, как и все другие поля.любой вход обновляется прямо сейчас, но с этим плагином не обновляется.что делать?

немного больше подробностей:

<form action="#" name="editform">
    <fieldset>
        <select name="speed" id="speed">
            <option value="Slower">Slower</option>
            <option value="Slow">Slowwwwwwwwww</option>
            <option value="Medium" selected="selected">Medium</option>
            <option value="Fast">Fast</option>
            <option value="Faster">Fasterrrrrrrrrrrrrrrr</option>
        </select>
    </fieldset>
<a class="refForm" href="javascript:document.editform.reset()">Reset</a>
</form>

теперь, когда я нажимаю сброс, он не сбрасывает (выбрать) раскрывающийся список. Я хочу, чтобы все выбранные поля вернулись к значениям по умолчанию с нажатием кнопки сброса.

Кстати: это плагин: Wiki jQuery-ui-selectmenu

Ура!Lucas

Ответы [ 7 ]

4 голосов
/ 14 июня 2012

Сброс всех комбобоксов формы

$("form .select").selectmenu("index", 0);
2 голосов
/ 12 сентября 2014

единственное решение, работающее на меня:

$('#resetButton').click(function() {
  $("#Service").selectmenu('destroy');
  $("#Service").prop('selectedIndex',0);
  $("#Service").selectmenu();
})';
1 голос
/ 14 августа 2015

Я обнаружил, что это так просто: (замените #mymenu на ваш селектор)

$ ("# mymenu") [0] .selectedIndex = 0;

$ ("MyMenu ") selectmenu (." обновить ");

0 голосов
/ 20 сентября 2016

Немного опоздал на вечеринку, однако, учитывая, что все остальные ответы либо неправильные, либо неполные, я добавлю свои 2 цента!

Все, что вам нужно сделать, это

$('#speed').val("Slower"); // your default option's value
$('#speed').selectmenu("refresh");
0 голосов
/ 22 октября 2014

В меню выбора пользовательского интерфейса jQuery есть свойство refresh.Вы должны назвать это:

$('select').selectmenu('refresh');

Конечно, вы хотите вызвать это после того, как в форме сработало событие сброса, когда исходный <select> был сброшен.Не существует «правильного» способа сделать это (например, нет события после сброса).Конечно, вы можете установить тайм-аут (как упоминалось ранее), но это кажется хакерским.Лучший / самый чистый способ, который я нашел, это написать свою собственную функцию «reset» и вызвать в ней форму form.reset (), прежде чем вызывать обновление, как показано выше.Например, вы можете прослушать щелчок по кнопке (ам) сброса:

// Modify selectors to fit your needs.
$('.resetButton').click(function()
{
    $('#searchForm')[0].reset();
    $('select').selectmenu('refresh');
    return false;
});

Я возвращаю false, чтобы не вызывать метод reset () дважды.

0 голосов
/ 24 ноября 2011

Вы можете привязать функцию к событию нажатия кнопки сброса \ триггера вместо обработчика привязки к событию сброса формы.Хитрость заключается в том, что когда вы сбрасываете форму, исходный выбор в ней сбрасывается до ее начального значения, поэтому после сброса формы вы можете получить значение выбора и обновить свое пользовательское меню выбора с этим значением.Это позволяет вам сбросить пользовательское меню выбора.Вот код:

$('.refForm').click(function(){
    var $that = $(this),
        select;
    setTimeout(function(){
        $that.closest('form').find('.ui-selectmenu').each(function(){
            select = $(this).prev();
            select.selectmenu("value", select.val());
        })
    }, 0)
})

Функция, которая получает значение исходного сброшенного выбора, помещается в setTimeout с нулевой задержкой - чтобы убедиться, что оригинальный выбор будет сброшен до того, как функция получит доступ к его значению.*

Также обратите внимание, что если теги option не имеют указанных атрибутов, приведенный выше код не будет работать в IE (7-9, насколько я тестировал).Поэтому вам нужно указать значение для всех параметров.

0 голосов
/ 10 июня 2011

Глядя на демонстрационную страницу:

http://jquery -ui.googlecode.com / svn / филиалы / labs / selectmenu / index.html

Донне вижу никаких доказательств того, что у него есть метод сброса.Но если это произойдет, я ожидаю, что он будет вызываться следующим образом:

$('select#speed').reset();

Обратите внимание, что с помощью плагина вы должны вызывать методы в объекте select с использованием jQuery, а не во всей форме.

.reset (), который вызывает ваш JS, является встроенным методом DOM.Вы можете использовать методы DOM для сброса выбора следующим образом:

getElementById("speed").selectedIndex = 0;
...