我在表单中使用selectize输入,如果用户首先选中了复选框,则会显示该输入:
{!! Form::text('engagement_question', null, ['id' => 'engagement_question', 'placeholder' => 'Spørsmål for "bli med"']) !!}
因此,在页面加载时,我正在检查复选框是否已选中,然后在我的脚本中根据该条件显示该字段。
$(document).ready(function() {
engagementCheckbox();
});
var engagementCheckbox = function() {
if($('#engagement-checkbox').is(":checked")) {
$('.engagement').show();
}
else {
$('.engagement').hide();
selectize.clear();
}
}
$('#engagement-checkbox').change(function() {
engagementCheckbox();
});
var items = icoop.engagements.map(function(x) {
return { item: x };
});
var $select = $('#engagement_question').selectize({
persist: false,
maxItems: 1,
options: items,
labelField: "item",
valueField: "item",
sortField: 'item',
searchField: 'item',
create: true,
render: {
option_create: function(data, escape) {
return '<div class="create">Nytt inlegg<strong> ' + escape(data.input) + '</strong>…</div>';
}
},
onChange: function(value) {
var unique = true;
for(var i = 0; i < items.length; i++) {
if(items[i].item == value) {
unique = false;
break;
}
}
if(!unique) {
$select.next('.selectize-control').find('.item').addClass('item-background');
}
},
});
var selectize = $select[0].selectize;
我还希望验证失败,如果该字段有一个,则显示用户的旧输入值。仅当用户从selectize items
中选择了一个选项时才返回输入,但如果用户自己创建了一个选项则不返回。
我试过添加Input::old('engagement_question')
但是没有工作:
{!! Form::text('engagement_question', Input::old('engagement_question'), ['id' => 'engagement_question', 'placeholder' => 'Spørsmål for "bli med"']) !!}
但它不起作用,我应该怎么做?
答案 0 :(得分:0)
你的输入::旧可能正常工作,问题似乎是如果唯一的选择是从&#39;项目中选择&#39;数组新添加的项目还不在此数组中,因此在选择运行后将从输入中删除。
您可以遍历旧的(&#39;标记&#39;)并将新项目添加到items数组中以用于新项目。