找回密码
 立即注册

QQ登录

只需一步,快速开始

wade

注册会员

7

主题

17

帖子

56

积分

注册会员

积分
56
wade
注册会员   /  发表于:2021-11-26 17:07  /   查看:2251  /  回复:5
spreadJS autocomplete的联动需求

我参考了这个demo https://demo.grapecity.com.cn/Sp ... /demos/autoComplete,实现了使用autocomplete,user输入一些内容后可以自动跳出需要的内容,然后进行选择,

我在里边加入了change事件,只有在里边输入内容,实现了联动的效果。
AutocompleteCellType.prototype.activateEditor = function (editorContext, cellStyle, cellRect, context) {
        ...
        $editor.autocomplete({
            minLength: 0,
            source: this.availableTags,
            change: function (event, ui) {
                console.log("changed");
//做联动的内容
            }            
        }).focus(function () {
            $(this).autocomplete('search', $(this).val())
        });

但是如果我不输入任何内容,只是像下拉框一样选择列表中一个内容,这时没有任何事件被触发,请问我可以用什么事件来进行触发被选到的内容?




5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-26 17:57:38
推荐
wade 发表于 2021-11-26 17:35
谢谢大神,但是这个close我有处理过,一样的结果, 都没有执行到。   
或者 这个下拉的内容是如何传入到 ...

这个我的demo以及复现步骤,我这边无论是输入还是选择都能触发这两个事件,可以看下是否符合你的需求
event.gif358318785.png

EditEnded事件需要按下回车或者选择其他单元格后会触发。


cus.zip

138.53 KB, 下载次数: 237

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-26 17:29:45
沙发
你好,这个是autocomplete这个组件的事件了,与SpreadJS关系不大了。不过你,可以尝试使用close事件。
image.png583733520.png
回复 使用道具 举报
wade
注册会员   /  发表于:2021-11-26 17:35:23
板凳
本帖最后由 wade 于 2021-11-26 17:50 编辑
Derrick.Jiao 发表于 2021-11-26 17:29
你好,这个是autocomplete这个组件的事件了,与SpreadJS关系不大了。不过你,可以尝试使用close事件。

谢谢大神,但是这个close我有处理过,一样的结果, 都没有执行到。   
或者 这个下拉的内容是如何传入到这个excel sheet 的cell的,它会触发哪个event,如果有这个event,应该也能解决这个问题?
我曾经在cell里用手打的方式(不是autocomplete),会触发下面的这个事件?
spread.bind(spreadNS.Events.EditEnded, function (e, args) {
            alert("done");

        });


回复 使用道具 举报
wade
注册会员   /  发表于:2021-11-26 18:27:36
5#
Derrick.Jiao 发表于 2021-11-26 17:57
这个我的demo以及复现步骤,我这边无论是输入还是选择都能触发这两个事件,可以看下是否符合你的需求

...

谢谢大神,现在我感觉找到了问题的解决方法,在我的系统实现里,结果是这样,1. user key in 后只触发了close,当移走光标后,后面的四个都出现了
User Keyin.JPG252575377.png

2. user 点击这个下箭头,然后选择其中一个后,只是触发了一个内容,(我不知道为什么我这里实现不了你demo的结果)
Select.JPG

3.代码的实现,我加入了四个事件,
a) spreadjs的事件
events.JPG
b) autocomplete的事件
autocomplete.JPG


所以我只要加入spreadjs的ValueChanged的事件就可以了,实现了我想要的内容。
spread.bind(spreadNS.Events.ValueChanged, function (e, args) {
            console.log("ValueChanged");
});

User Keyin.JPG
image.png877609557.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-29 08:55:20
6#
wade 发表于 2021-11-26 18:27
谢谢大神,现在我感觉找到了问题的解决方法,在我的系统实现里,结果是这样,1. user key in 后只触发了c ...

不用客气的,解决了就好,当单元格的内容发生变化且结束编辑状态后,会触发这个valueChanged事件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部