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
干杯! 卢卡斯
答案 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");