Javascript 选择在提交表单后获取双选项

Javascript 选择在提交表单后获取双选项,javascript,jquery,select,bootstrap-modal,Javascript,Jquery,Select,Bootstrap Modal,我在引导模式窗体和动态选择选项方面遇到问题 当我打开模式时,有一个输入和两个选择选项。 一个选择是在用户从中选中选项后填充第二个选择 第一个选择。 在第一次加载时,选择选项工作正常。 当我用Save按钮提交表单并重新打开模式时,第一个选择得到了正确的选项,但第二个选择得到了双选项。 当我重新加载页面时,一切都恢复正常,直到我再次提交表单 $document.readyfunction{ var table=$“table.settinggroups”; var table_permission

我在引导模式窗体和动态选择选项方面遇到问题

当我打开模式时,有一个输入和两个选择选项。 一个选择是在用户从中选中选项后填充第二个选择 第一个选择。 在第一次加载时,选择选项工作正常。 当我用Save按钮提交表单并重新打开模式时,第一个选择得到了正确的选项,但第二个选择得到了双选项。 当我重新加载页面时,一切都恢复正常,直到我再次提交表单

$document.readyfunction{ var table=$“table.settinggroups”; var table_permissions=$'table.settings group permissions'; var table_permissions_edit=$“table.settings group permissions edit”; var权限=[]; var dataArray=[]; $'addGroupModal'。在'Showed.bs.modal'上,函数e{ $'selectpermission\u category'。每个函数{ var$select=$this; $select.empty.append; $.ajax{ url:$select.attr'data-source' }.Then功能选项{ options.mapfunction选项{ var$选项=$; 美元期权 .valoption[$select.attr'data-valueKey'] .textoption[$select.attr'data-displayKey']; $select.append$option; }; }; }; $'selectpermission\u category'.changefunction{ var category=$'selectpermission\u category'.val; 如果类别!=={ $'selectpermission\u category\u description'。每个函数{ var$select=$this; $select.empty.append; $.ajax{ url:$select.attr'data-source', 数据:{category:category} }.Then功能选项{ options.mapfunction选项{ var$选项=$; 美元期权 .valoption[$select.attr'data-valueKey'] .textoption[$select.attr'data-displayKey']; $select.append$option; }; }; }; }否则{ $'selectpermission\u category\u description'[0]。为空; } }; $'selectpermission\u category\u description'。更改功能{ var category=$'selectpermission\u category'.val; var description=$'selectpermission\u category\u description'.val; var check=$.inaraydescription,权限>-1; 如果!检查{ 权限。描述; 表\u权限.DataTable.row.add{ 类别:类别,, 描述:描述 }.抽签; } }; //保存权限 $'formadd-group'。提交函数e{ $'savebtn'。按钮'加载'; e、 防止违约; var form=$this; //将表数据权限推送到表单以供提交 $.attr{ 键入:“隐藏”, id:'权限', 名称:'权限', 值:权限 }.附属物形式; $.ajax{ url:form.attr'action', 类型:form.attr'method', 数据:新FormDatathis, 数据类型:“json”, processData:false, contentType:false, 成功:函数数据{ $'addGroupModal'.modal'toggle'; 游泳 'Επιβεβαίωση Καταχώριση', 'Η ομάδα δικαιωμάτων καταχωρήθηκε επιτυχώς', “成功” .Then函数{ 权限=[]; dataArray=[]; 表单[0]。重置; $'selectpermission\u category\u description'。为空; 表_permissions.DataTable.destroy; table.DataTable.ajax.reload; }; }, 错误:函数数据{ 游泳 'Αποτυχία Καταχώρισης', data.responseText, “错误” } }; }; //单击X时删除行 表u权限。在“单击”、“删除”功能上{ 表\权限.DataTable.row'.selected'.remove.drawfalse; }; }; $'addGroupModal'。在'hide.bs.modal'上,函数e{ //在模式关闭时清除表单/选择/数据表/数组 $'selectpermission\u category\u description'。为空; 美元 m'[0]。重置; 表_permissions.DataTable.destroy; 权限=[]; dataArray=[]; }; $'editGroupModal'。在'Showed.bs.modal'上,函数e{ var id=$e.relatedTarget.data'id'; $.post'../../custom/json/groups.php?view',{id:id},函数arr{ $'inputgroup_name'.valarr.description; //从组中获取现有权限 dataArray=arr.data.mapfunction值{ 返回值.description; }; }; $'selectpermission\u category\u edit'。每个函数{ var$select=$this; $select.empty.append; $.ajax{ url:$select.attr'data-source' }.Then功能选项{ options.mapfunction选项{ var$选项=$; 美元期权 .valoption[$select.attr'data-valueKey'] .textoption[$select.attr'data-displayKey']; $select.append$option; }; }; }; $'selectpermission\u category\u edit'。更改功能{ var category=$'selectpermission\u category\u edit'.val; 如果类别!=={ $'selectpermission\u category\u description\u edit'。每个函数{ var$select=$this; $select.empty.append; $.ajax{ url:$select.attr'data-source', 数据:{category:category} }.Then功能选项{ options.mapfunction选项{ var$选项=$; 美元期权 .valoption[$select.attr'data-valueKey'] .textoption[$select.attr'data-displayKey']; $select.append$option; }; }; }; }否则{ $'selectpermission\u category\u description\u edit'[0]。为空; } }; $'selectpermission\u category\u description\u edit'。更改功能{ var category=$'selectpermission\u category\u edit'.val; var description=$'selectpermission\u category\u description\u edit'.val; 权限=数据数组; var check=$.inaraydescription,权限>-1; 如果!检查{ 权限。描述; 表\u权限\u编辑.DataTable.row.add{ 类别:类别,, 描述:描述 }.抽签; } }; var SettingGroupSubmissionEdit={ 摧毁:没错, 处理:对, 是的, 回答:是的, 选择:true, 搜索:假, 分页:false, 信息:错, 订购:错, 语言:{ url:/custom/js/data tables/希腊文.json }, ajax:../custom/json/groups.php?view&id=+id, dataSrc:数据, 栏目:[ {data:category,className:text center}, {data:description,className:text center}, { 数据:null,类名:文本中心btn操作,呈现:函数数据,类型,行{ 回来 } } ] }; $'table.settings groups permissions edit'.DataTable$.extendtrue,{},settingGroupsPermissionsEdit,{}; //保存权限 $'formedit-group'。提交函数e{ $'editbtn'。按钮'加载'; e、 防止违约; var form=$this; //将表数据权限推送到表单以供提交 $.attr{ 键入:“隐藏”, id:'权限', 名称:'权限', 值:权限 }.附属物形式; $.ajax{ url:form.attr'action'+'&id='+id, 类型:form.attr'method', 数据:新FormDatathis, 数据类型:“json”, processData:false, contentType:false, 成功:函数数据{ $'editGroupModal'.modal'toggle'; 游泳 'Επιβεβαίωση Ενημέρωσης', 'Η ομάδα δικαιωμάτων ενημερώθηκε επιτυχώς', “成功” .Then函数{ 权限=[]; dataArray=[]; 表单[0]。重置; $'selectpermission\u category\u description\u edit'。为空; 表\u权限\u编辑.DataTable.destroy; table.DataTable.ajax.reload; }; }, 错误:函数数据{ 游泳 'Αποτυχία Ενημέρωσης', data.responseText, “错误” } }; }; //单击X时删除行 表_权限_编辑。在“单击”、“删除”功能上{ var row_desc=table_permissions_edit.DataTable.rows'.selected'.data.pull'description'[0]; permissions=removepermissions,row_desc;//从发布的权限数组中删除元素 表\u权限\u编辑.DataTable.row'.selected'.remove.draw; }; }; $'editGroupModal'。在'hide.bs.modal'上,函数e{ //在模式关闭时清除表单/选择/数据表/数组 $'selectpermission\u category\u description\u edit'。为空; $'form'[0]。重置; 表\u权限\u编辑.DataTable.destroy; 权限=[]; dataArray=[]; }; //删除组 表.在“单击”上,使用“swal delete”函数{ var id=$this.data'id'; 游泳{ 标题:“Διαγραφή”, 正文:“Εί∑τε∑ίγοο/ηοτιθέλετεναδιαγράψεεττηηδοκαιωμάτω, 键入:“警告”, showCancelButton:true, confirmButtonColor:'0CC27E', 取消按钮颜色:“FF586B”, confirmButtonText:“Ναι”, 取消按钮文本:“Όχι” }.然后确认功能{ 如果我确定{ $.post.././custom/json/groups.php?删除,{id:id},函数数据{ 游泳 'Επιβεβαίωση Διαγραφής', 'Η ομάδα δικαιωμάτων διαγράφηκε επιτυχώς', “成功” .Then函数{ table.DataTable.ajax.reload; }; }; } }.catchswal.noop; }; //从数组中删除元素 函数removearray,值{ return array.filterfunction元素{ 返回元素!==值; }; } }; Προσθήκη Νέας Ομάδας Όνομα Ομάδας: Κατηγορία Πρόσβαση Κατηγορία Πρόσβαση Κλείσιμο Αποθήκευση Επεξεργασία Ομάδας Όνομα Ομάδας: Κατηγορία Πρόσβαση Κατηγορία Πρόσβαση Κλείσιμο Αποθήκευση 因为您绑定了$'selectpermission\u category'。请在$'addGroupModal'内更改。在'Showed.bs.modal'处理程序上,因此每次模式显示时,它都会绑定$'selectpermission\u category'。请下次更改。这就是为什么当你第二次打开模式时,第二个选择选项会加倍,第三次会加倍

您可以通过以下方式解决此问题: 选项1:移动$'selectpermission\u category'。更改为在$'addGroupModal'处理程序上的$'addGroupModal'之外

选项2:删除$'selectpermission\u category'更改处理程序,在关闭模式时使用,或在$'addGroupModal'中将其绑定到处理程序上之前使用


选项3:先创建所有选项,然后使用,而不是。追加以设置选择的html内容此仍绑定多次更改,但选项不会成倍增加

I清空第4行的$select。您还需要清空第二个选择框的select。From:$select.append$option;->$选择.empty.append$选项;我在我的问题上更新了js代码听起来像你的.on-回拨的电话越来越多。检查您的代码,查看您对每个on-method调用运行了多少次。要清除绑定,可以使用jqueryoff方法,如下所述:尝试了选项1,但没有帮助。在选项2上,我添加了$'selectpermission\u category'.off和$'selectpermission\u category\u description'.off.empty,效果很好!!谢谢你,艾莉,我很高兴这有帮助。