在LiveChange事件上进行条形码扫描自动触发

梅来

我的SAPUI5应用程序具有条形码扫描功能。首先,用户将看到一个弹出窗口,可以在其中进行条形码扫描;如果扫描的条形码正确,它将触发“下一步”按钮,并依次显示另一个弹出窗口,用于下一次条形码扫描。对于第一个条形码,用户必须扫描6-7位数字,而在第二个条形码上,用户应扫描5位数字。我的问题是第一条条形码的自动触发。当用户扫描7位数字时,它将触发下一个2x。有没有办法知道扫描的条形码文本的最后长度?

这是我的TextInput liveChange事件

                        liveChange: function(oEvent) {

                        sText = oEvent.getParameter('value');
                        parent1 = oEvent.getSource().getParent();

                            if ((typeof sText != 'undefined') && (sText.length >= 6) )
                            {

                                sap.ui.getCore().byId(t.createId("costCenterInput")).setValue(sText);
                                setTimeout(function() { 
                                    console.log(parent1.getBeginButton());
                                    if (parent1.getBeginButton() != null){
                                    parent1.getBeginButton().firePress(oEvent); 
                                    }

                                    }, 5000);

                            }
                    }

此代码的问题在于,外部条形码扫描器充当蓝牙键盘,一次只能输入一个数据。假设我们扫描1234567,在输入6时它已经触发,即使超时也将在输入7时再次触发。

新密码

    onScanAddressMobile: function(){

    var t = this;
    t.oBundle = this.oApplicationFacade.getResourceBundle();
    var dialog = new sap.m.Dialog(t.createId("ccDialog"), {
            title: t.oBundle.getText("COST_CENTER"),
            type: 'Message',
            content: [
                new sap.m.Text({ text: t.oBundle.getText("SCAN_COST_CENTER")}),
                new sap.m.Input(t.createId("costCenterInput"), {
                    type: "Number",
                    liveChange: 

                    function(oEvent){
                        t.onLiveChange(oEvent);
                    }

                }),
      .....some more code here...
      },

      onLiveChange : function(event) {
        //alert("onLiveChange");
                    var value = event.getParameter("value");
                    if (value && value.length === 6) {
                        alert("6 character");
                        this.timer = setTimeout(this.gotoNextPage(value), 4000);  
                    } else if (value && value.length > 6) {
                        alert("6 or more");
                        if (this.timer) {
                          clearTimeout(this.timer);
                        }
                        this.gotoNextPage(value);
                    }
    },
耶彭宁霍夫

用作蓝牙键盘的条形码扫描仪将非常快速地“键入”其数据。如果您收到了6位数字,但可能在250毫秒之内未收到任何信息,则可以认为条形码已完成,并跳至下一页。

如果您收到的7位数字,您甚至不需要再等待,而是可以立即跳到下一页。

因此,我想您的代码必须看起来像这样:

onLiveChange : function(event) {
    var value = event.getParameter("value");
    if (value && value.length === 6) {
        this.timer = setTimeout(this.gotoNextPage, 250)  
    } else if (value && value.length > 6) {
        if (this.timer) {
          clearTimeout(this.timer);
        }
        this.gotoNextPage();
    }
}

请在此jsbin中找到超时时间稍长的示例:http ://jsbin.com/kolacez/1/edit?html,输出

这将发生:

  • 字符1:一无所有
  • 字符2:一无所有
  • 字符3:一无所有
  • 字符4:一无所有
  • 字符5:一无所有
  • 字符6:设置了计时器,如果在特定时间段内未收到字符7,则认为条形码已完成,它将启动gotoNextPage。
  • 字符7:取消计时器并直接启动gotoNextPage。

因此,如果接收到7个字符的条形码,则将同时执行char 6和char 7的逻辑,但是由于取消了char 6的计时操作,因此gotoNextPage方法仅启动一次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何模拟条形码扫描事件

来自分类Dev

使用蓝牙条形码扫描仪模拟进行测试自动化

来自分类Dev

条形码扫描损坏

来自分类Dev

使用Zbar或Zxing在各个方向进行条形码扫描

来自分类Dev

错误进行条形码扫描的Android Mobile Vision

来自分类Dev

使用PyQt5进行条形码扫描

来自分类Dev

使用Zbar或Zxing在各个方向进行条形码扫描

来自分类Dev

Movilizer条形码屏幕触发“确定”事件

来自分类Dev

在WebView Android中扫描条形码

来自分类Dev

从移动网站扫描条形码?

来自分类Dev

使用PhoneGap(Monaca)在条形码扫描仪上添加自动对焦

来自分类Dev

如何将ZXing Library集成到Android Studio进行条形码扫描?

来自分类Dev

Android:使用zxing进行条形码扫描并以片段形式返回结果

来自分类Dev

通过使用React Native,Expo扫描条形码来进行Webview Uri重定向

来自分类Dev

iOS:AVFoundation条形码扫描-更改扫描区域

来自分类Dev

iOS:AVFoundation条形码扫描-更改扫描区域

来自分类Dev

使用Javascript进行条形码解码

来自分类Dev

条形码扫描仪仅显示条形码的第一位

来自分类Dev

在iOS 8中扫描条形码并显示条形码

来自分类Dev

如何使条形码扫描仪从数据库中检查条形码编号?

来自分类Dev

如何从C#Winforms中的条形码扫描仪读取条形码值

来自分类Dev

条形码扫描仪仅显示条形码的第一位

来自分类Dev

iOS条形码扫描API能够同时读取3条条形码

来自分类Dev

扫描HTML5 / JavaScript中的条形码

来自分类Dev

蓝牙条形码扫描仪的解码输出

来自分类Dev

Rails应用的条形码扫描仪

来自分类Dev

本地扫描UIImage的条形码(即不使用ZBar)

来自分类Dev

从Swing中的条形码扫描仪读取

来自分类Dev

在Java中使用Zxing扫描多个条形码

Related 相关文章

  1. 1

    如何模拟条形码扫描事件

  2. 2

    使用蓝牙条形码扫描仪模拟进行测试自动化

  3. 3

    条形码扫描损坏

  4. 4

    使用Zbar或Zxing在各个方向进行条形码扫描

  5. 5

    错误进行条形码扫描的Android Mobile Vision

  6. 6

    使用PyQt5进行条形码扫描

  7. 7

    使用Zbar或Zxing在各个方向进行条形码扫描

  8. 8

    Movilizer条形码屏幕触发“确定”事件

  9. 9

    在WebView Android中扫描条形码

  10. 10

    从移动网站扫描条形码?

  11. 11

    使用PhoneGap(Monaca)在条形码扫描仪上添加自动对焦

  12. 12

    如何将ZXing Library集成到Android Studio进行条形码扫描?

  13. 13

    Android:使用zxing进行条形码扫描并以片段形式返回结果

  14. 14

    通过使用React Native,Expo扫描条形码来进行Webview Uri重定向

  15. 15

    iOS:AVFoundation条形码扫描-更改扫描区域

  16. 16

    iOS:AVFoundation条形码扫描-更改扫描区域

  17. 17

    使用Javascript进行条形码解码

  18. 18

    条形码扫描仪仅显示条形码的第一位

  19. 19

    在iOS 8中扫描条形码并显示条形码

  20. 20

    如何使条形码扫描仪从数据库中检查条形码编号?

  21. 21

    如何从C#Winforms中的条形码扫描仪读取条形码值

  22. 22

    条形码扫描仪仅显示条形码的第一位

  23. 23

    iOS条形码扫描API能够同时读取3条条形码

  24. 24

    扫描HTML5 / JavaScript中的条形码

  25. 25

    蓝牙条形码扫描仪的解码输出

  26. 26

    Rails应用的条形码扫描仪

  27. 27

    本地扫描UIImage的条形码(即不使用ZBar)

  28. 28

    从Swing中的条形码扫描仪读取

  29. 29

    在Java中使用Zxing扫描多个条形码

热门标签

归档