貅寅
貅寅
  • 发布:2015-05-08 08:25
  • 更新:2019-12-07 17:51
  • 阅读:4089

JS创建数字输入框 放在plusReady内 增加 减少按钮无效 evalJS调用也无效

分类:MUI
mui.plusReady(function() {  
                //test();  
            });  
            test();  

            function test() {  
                var test = document.body.querySelector('.mui-input-group');  
                test.innerHTML = '<div class="mui-input-row"><label>数字框一</label>' +  
                    '<div class="mui-numbox"><button class="mui-btn mui-numbox-btn-minus" type="button">-</button>' +  
                    '<input class="mui-numbox-input" type="number" value="2" />' +  
                    '<button class="mui-btn mui-numbox-btn-plus" type="button">+</button></div></div>';  
            }

如题,直接放在外面调用方法 加减按钮可以操作,放在plusReady内则无法操作,其他页面中使用evalJS调用test方法也无法操作。
想实现的目标是第一次加载时调用,之后显示页面时调用

2015-05-08 08:25 负责人:无 分享
已邀请:

最佳回复

houfeng2016

houfeng2016

mui 页面默认会自动初始化页面中的所有数字输入框,动态构造的 DOM 需要进行手动初始化。
比如:您动态创建了一个 ID 为 abc 的数字输入框,需要 mui('#abc').numbox() 初始化一下。

在您提供的示例代码中,为什么 test() 放在 mui.plusReady 外边可以,而放在里边就不可以?
这是因为 numbox 的自动初化是在 mui.ready 时完成的,直接在外部的 test() 执行发生在 mui.ready 之前,而写在 mui.plusReady 里 test() 的执行发生在 mui.ready 之后导致的。

所以请注意,在 mui.ready 之后动态构造 dom 时,请进行手动初始化。

  • 野原新之助

    是对mui-numbox初始化还是对input初始化?给个具体的示例可以吗?

    2015-07-08 15:57

  • houfeng2016

    mui-numbox

    2015-07-11 19:56

貅寅

貅寅 (作者)

谢谢 问题解决了

  • 野原新之助

    怎么解决的?

    2015-07-08 15:57

  • 貅寅 (作者)

    每次有改变都执行 mui('.mui-numbox').numbox();

    2015-07-08 17:11

哥谭市长江大桥

哥谭市长江大桥

我也遇到这个问题
Mui v3.7.2
直接html的number box;
只要使用了$.plusReady(function() {,不管在哪里初始化number box都报错。
[ERROR] : TypeError: undefined is not an object (evaluating 'a.input.value') at js/mui.min.js:9,然后加减无效。

把$.plusReady(function() {头尾注释掉之后不用初始化number box都可以正常执行。

kysin

kysin - 扶不起的蝌蚪

plusReady本身就是个闭包,只有把你写的方法暴露出去,外部才能调用得到。

该问题目前已经被锁定, 无法添加新回复