问题描述
我有一个js fiddle来说明我面临的问题。 制表符的“电子邮件”列的自由文本设置为true,以允许用户将单元格的值设置为自由文本条目,如下所示:
@H_404_3@editorParams:{ values:{ "[email protected]":"steve","[email protected]":"bob","[email protected]":"jim","[email protected]":"Harvy","[email protected]":"Ken","[email protected]":"Denny" },freetext:true,searchFunc:function(term,values){ console.log("term and val "+term +" \n"+values); var matchedEntries = {}; var matchFound = false; for(var key in values) { if(key.includes(term)){ matchFound = true; matchedEntries[key] = values[key]; } } if(matchFound){ return matchedEntries; } else{ return {term: term}; } } }}
-
从显示的选择器列表中选择一个值,例如steve,值为“ [email protected]”。
-
然后,在选择值之后,单击同一制表符单元,显示的值突然变为标签。当用户单击Enter键时,将选择标签而不是值。将显示steve而不是[email protected]
如果这不是错误,那么如何确保在单击enter后仍然选择值[email protected]。这是因为该列的editorParams中的freetext选项设置为true
随附显示问题的gif
解决方法
那不是错误,
启用 自由文本 后,用户可以在该字段中输入他们喜欢的任何文本,并且该文本将被保存,这正是示例中发生的情况
如果他们再次从列表中选择了电子邮件地址,则将其正确保存。
这是一个/或一个方案,您可以限制用户从列表中选择特定值,或者在任何情况下都可以允许他们使用自由文本。
如果您想要不同的行为,那么您始终可以构建一个可按所需方式运行的自定义编辑器。检出Custom Editor Documentation以获取更多信息