javascript - Select2 删除表单中编辑事件的数据
问题描述
我正在尝试在选择 2 框中获取选定的数据,然后允许用户从下拉列表中选择其他条目。但是,当用户单击编辑时,表单会加载所有数据,但在 select2 下拉数据中会显示一秒钟,然后它会刷新/隐藏。
视频: https ://drive.google.com/file/d/1B10cFedD7h9o1MybhLlmlyq_voL7T6SP/view
表单 JS:
// Init the Cx Form
$cxRecordEditForm.cxForm({
loadDataUrl: '<?php echo $this->CxHelper->Route('eb-admin-get-evaluation-cause-by-id')?>',
loadData: {listSymptoms: true, listRemedies: true},
loadSuccess: function(formData){
if(formData){
// Get Linked Symptoms on EDIT
var symptomsListArray = formData.symptoms_list;
if(symptomsListArray){
symptomsListArray.forEach(function(entry) {
// create the option and append to Select2
var option = new Option(entry.text, entry.id, true, true);
$('#symptoms_list').append(option).trigger('change');
});
}
// Get Linked Remedies on EDIT
var remediesListArray = formData.remedies_list;
if(remediesListArray){
remediesListArray.forEach(function(entry) {
// create the option and append to Select2
var option = new Option(entry.text, entry.id, true, true);
$('#remedies_list').append(option).trigger('change');
});
}
}
},
看法:
<section class="col col-6">
<label class="label">{{EbEvaluationCauseForm.getLabel("symptoms_list")}}</label>
<label class="input">
{{ EbEvaluationCauseForm.render("symptoms_list", ["class": "select2"]) }}
</label>
</section>
<section class="col col-6">
<label class="label">{{EbEvaluationCauseForm.getLabel("remedies_list")}}</label>
<label class="input">
{{ EbEvaluationCauseForm.render("remedies_list", ["class": "select2"]) }}
</label>
</section>
形式:
public function initialize() {
// Create form fields
$this->add($this->createHiddenField('id'));
$this->add($this->createTextField('title', 'Title', false));
$this->add($this->createTextField('description', 'Explanation', false));
$this->add($this->createSelect2Field('symptoms_list', 'Symptoms', 'Select Symptom','symptoms',false, true, true));
$this->add($this->createSelect2Field('remedies_list', 'Remedies', 'Select Remedy','remedies',false, true, true));
}
编辑点击的 JSON 返回是:
{"data":{"id":53,"title":"Well Test","description":"Well Test Explained","is_active":1,"order_by":null,"date_created":"0000- 00-00 00:00:00","date_updated":"0000-00-00 00:00:00","症状":[{"id":18,"text":"小牛压痛"}], "symptoms_list":[{"id":18,"text":"小腿压痛"}],"remedies":[{"id":4,"text":"Adrenal Kit"},{"id": 4,"text":"肾上腺套件"}],"remedies_list":[{"id":4,"text":"肾上腺套件"},{"id":4,"text":"肾上腺套件" }]}}
谢谢
解决方案
控制器似乎正在重新生成视图,您是否尝试过:
$this->view->disable();
用它?
推荐阅读
- java - 带有模态的舞台隐藏最大化按钮
- oracle-apex - 是否可以在其他数据库服务器上运行 Apex?
- node.js - 在 apache 服务器上托管带有 hello world 的简单快速应用程序
- c# - 在 vb.net 或 c# 中获取 sharepoint 的 listitem 中的列表文件夹
- javascript - 我一直在 codeigniter 中从 ajax url 中找不到 404 错误
- excel - 运行时错误“424”:VBA 复制/粘贴宏所需的对象与未保护的工作簿
- docker - 如何从 jenkinsfile 构建多个 docker 容器?
- python - Project Euler 问题 26 分数中的 Python 字符串限制
- javascript - Firefox 数字本地化不一致
- javascript - 按值在深层嵌套对象中查找对象