通过jquery更改实现选择框的值
我想通过jquery更改materialize选择框值。
我正在使用$('#myselect').val('1');
在其他选择框的onchange
事件但它不起作用。
$("#select1").change(function() { $('#myselect').val('1'); });
它看起来对我来说很好,改变第一个下拉,将第二个下拉的值重置为1。
我在jsFiddle上做了一个粗略的实现: http : //jsfiddle.net/55r8fgxy/1/
JS:
$(function() { $("#select1").on('change', function() { $('#myselect').val("1"); // re-initialize material-select $('#myselect').material_select(); }); });
正如@logikal所建议的那样,你必须重新初始化
$("#myselect").material_select()
而不是使用.val(),使用jQuery像往常一样设置值更简洁:
$('#my-select').find('option[value="my-value"]').prop('selected', true); $("#my-select").material_select();
$('#myselect').formSelect() ;
新方法是formSelect(),在更新select之后使用它。
使用委托事件为我解决了问题。
HTML
JS
$('#pickerContainer').on('change', 'select', function(){ console.log("got you"); });
这类似于logikal的回答,但我认为更清洁:
$(".your-component-class").change(function(){ //your code.. //re-initialize component $(this).material_select(); });
对于新的实现1.0.0,使用.select()
而不是.material_select()
解决方案无需重新初始化。
function msValue (selector, value) { selector.val(value).closest('.select-wrapper').find('li').removeClass("active").closest('.select-wrapper').find('.select-dropdown').val(value).find('span:contains(' + value + ')').parent().addClass('selected active'); }
然后就用吧
msValue($("#select_id"), "value_here")
在2018年( Materialize v1.0.0-rc.2
)中,首先必须以编程方式设置选项:
$('#SELECT-ID').find('option[value="SELECT-VALUE"]').prop('selected', true);
然后使用以下命令重新初始化select
输入:
$("#SELECT-ID").formSelect();
希望能帮助到你!
我从这里找到了合适的解决方案
对于多重物化
现在你只是对你的Javascript部分进行了一些改动,那就是url:
代替
或materialize.min.js的任何其他链接
对于多个选择启用:
$(document).ready(function () { $('select').material_select(); });
而已。 您可以查看此解决方案的演示: JSFiddle