起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1598|回复: 2

[处理中4] 异步回调函数里给input赋值

[复制链接]

22

主题

72

帖子

132

积分

初级会员

Rank: 2

积分
132
QQ
发表于 2017-2-22 22:53:42 | 显示全部楼层 |阅读模式
想在点输入框的时候,先取个值填上,如果是用户期待的值,就省的手工输入了,如果不是再在默认值的基础上改。试了半天,只是部分实现了。觉得应该是个小问题,但卡住了,真愁人。

问题1:input的focus里用val("xx")给自己赋值,光标一离开值就消失,我别的同事试了也是这样。
问题2:好像是焦点进入输入框以后,光标在里面闪烁了,再用 val("xx")赋值就不起作用了,输入框中体现不出变化,也谈不上光标离开后消失了。我真正的需求是点输入框在focus事件中执行一个异步操作,在操作的回调函数里给input赋值。一开始也是赋不进去,后来在focus事件中加上.blur(),让他既触发focus事件,又立刻失去焦点,这样回调函数中能赋值进去了。由于是在焦点离开以后赋的值,所以也就不存在光标离开值消失的问题了。但!那输入框基本变成只读的了,因为没办法获得焦点了呀。

问题2的代码是这样的:
Model.prototype.input15Focus = function(event){
    var self = this;
    $(self.getElementByXid('input15')).blur();

     //以sqlite为例,是异步的,并不一定真的是sqlite操作,别的异步操作也都差不多
    SqliteUtil.executeSql(db, "SELECT * FROM tab1 ",  
        function (res) {
            $(self.getElementByXid('input15')).val(res.rows.length+"条");
            //试图让焦点再回到input组件里,但调用不成功
            // $(self.getElementByXid('input15')).focus();
        },
        null
    );

至于问题1,我建个最简单的页面,随便放两个input控件,在focus或click事件中用 val()或text()赋值,光标离开后值就没了。放个按钮,点按钮给input赋值也一样。版主说在他那里就没这现象,不知道是我的环境有什么不同,明天我重装一遍系统试试。

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-2-23 09:32:14 | 显示全部楼层
关于第一个问题  昨天有一个小伙伴说  他用this.comp()这个方法获取后不会消失但是用$(this.getElementByXid('XXXX'))这个就会  
回复 支持 反对

使用道具 举报

22

主题

72

帖子

132

积分

初级会员

Rank: 2

积分
132
QQ
 楼主| 发表于 2017-2-23 10:21:58 | 显示全部楼层
谢谢,问题1用this.comp确实可以,但this.comp返回的对象好像没有blur()方法,还是解决不了问题2
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-1 02:52 , Processed in 0.058421 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表