jquery UI selectmenu - 如何重置表单重置按钮上的下拉列表

时间:2011-06-10 10:45:39

标签: jquery-ui select menu drop-down-menu reset

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

干杯! 卢卡斯

7 个答案:

答案 0 :(得分:4)

重置格式

的所有组合框
$("form .select").selectmenu("index", 0);

答案 1 :(得分:2)

对我有用的唯一解决方案:

$('#resetButton').click(function() {
  $("#Service").selectmenu('destroy');
  $("#Service").prop('selectedIndex',0);
  $("#Service").selectmenu();
})';

答案 2 :(得分:1)

我发现它很简单:(用选择器替换#mymenu)

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

$(&#34; MyMenu菜单&#34)selectmenu。(&#34;刷新&#34);

答案 3 :(得分:0)

查看演示页面:

http://jquery-ui.googlecode.com/svn/branches/labs/selectmenu/index.html

我没有看到任何证据表明它有重置方法。但如果确实如此,我希望以这种方式调用它:

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

请注意,使用插件时,您必须在jQuery包装的选择对象上调用方法,而不是在整个表单上。

你的JS调用的.reset()是一个内置的DOM方法。您可以使用DOM方法重置select,如下所示:

getElementById("speed").selectedIndex = 0;

答案 4 :(得分:0)

您可以在重置按钮\触发器的单击事件上绑定函数,而不是在窗体的重置事件上绑定处理程序。诀窍在于,当您重置表单时,其中的原始选择将重置为其初始值,因此,在重置表单后,您可以获取选择的值并使用该值更新自定义选择菜单。这样做可以让您重置自定义选择菜单。这是代码:

$('.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内,零延迟 - 以确保在函数访问它之前重置原始选择。

另请注意,如果选项标签没有指定值属性,则上述代码将无法在IE中工作(据我测试,7-9)。因此,您需要为所有选项指定值。

答案 5 :(得分:0)

jQuery UI的selectmenu具有刷新属性。你应该这样称呼:

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

当你重置原始<select>时,你想在表单上重置事件后调用它。没有适当的&#39;这样做的方式(例如,没有后续事件)。当然你可以设置一个超时(如前所述),但这感觉很乱。我发现做到这一点的最好/最干净的方法就是写自己的“重置”&#39;函数并在调用刷新之前调用form.reset(),如上所示。例如,你可以听一下你的重置按钮:

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

我返回false以防止重置()被调用两次。

答案 6 :(得分:0)

派对有点晚,但考虑到所有其他答案都不正确或不完整,我会投入2美分!

您需要做的就是

$('#speed').val("Slower"); // your default option's value
$('#speed').selectmenu("refresh");