在从验证页面重新加载后,Select2的Laravel输入值不会保留

时间:2016-01-09 19:01:50

标签: javascript php jquery laravel select2

我有一个选择表单输入,如下所示:

<div class="form-group col-md-3 @if($errors->first('contas.0.banco')) has-error @endif">
    {!! Form::label('contas[0][banco]', 'Nome do Banco') !!}
    {{ Form::select('contas[0][banco]', [] , null , ['class' => 'form-control select-banco']) }}
    <small class="text-danger">{{ $errors->first('contas.0.banco') }}</small>
</div>

值为空,因为我正在使用Select2插件加载JavaScript,其中包含:

var arrayBancos = [
    { id: 'HSBC', codigo: '399', text: 'HSBC Bank Brasil', site: 'www.hsbc.com.br', mime: '.png' },
    { id: 'Santander', codigo: '033', text: 'Banco Santander', site: 'www.santander.com.br', mime: '.png' },
    { id: 'Citibank', codigo: '745', text: 'Banco Citibank', site: 'www.citibank.com.br', mime: '.jpg' }
];

$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
    selectElement.select2({
        data: arrayBancos,
        language: 'pt-BR',
        matcher: oldMatcher(matchStart),
        escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
        templateResult: formatSelecaoBanco,
        templateSelection: formatBanco,
        dropdownCss: { 'min-width': '350px' }
    });
});

正如您所看到的,插件中添加了一些自定义设置(最重要的一个,搜索在arrayBancos.idarrayBancos.codigoarrayBancos.text中查找匹配项),因此我使用Javascript填充选择输入以使事情变得更容易。

一切正常,除了一件事:当页面来自验证并检测到无效输入时,该字段的值不会被保留(所有其他字段都没问题)。可能因为select中没有选项值,所以无法设置,只有在加载jQuery并且初始化插件时才有可用的选项。

那么......有什么想法可以解决这个问题吗?也许在HTML上设置<options>并使用data-*属性转换为类似上面的数组?

1 个答案:

答案 0 :(得分:1)

在下拉列表中设置选项后,在页面加载时,您应该设置它的值,如下所示:

$(".select-banco").select2("val", "HSBC");