javascript - 使用 dojo 按键事件时无法避免最后一个字符输入

标签 javascript dojo

我正在尝试在按键事件上调用道场。我想要实现的是,一旦遇到“%”,我想开始读取后续字符,一旦遇到“?”,我想对文本进行子串并替换整个文本带有子字符串文本的框。

虽然我能够对文本和所有内容进行子串,但我面临的问题是“?”它出现在子字符串文本之后。

即当'?'按下后,字符串将被子字符串化,并且所需的文本将被替换到框中。但是,文本带有“?”,这是我不想要的。

例如 我输入 11111%B3333555533335555?,所以我希望将整个文本替换为 3333555533335555,但是,在我的情况下,它以 3333555533335555? 结尾> 我使用以下代码来调用该事件:

require(["dojo/keys", "dojo/dom", "dojo/on", "dojo/domReady!"],
            function(keys, dom, on){
        on(dom.byId(abc), "keypress", function(evt){
//substring the code here and set the value back
});
});

此外,keyup 事件对我不起作用。不知道这是否能解决问题,但它不起作用。在 Firefox 和 IE 中尝试过。

最佳答案

虽然您尝试了“keyup”事件并且它“不起作用”,但我建议您查看此事件。 keyup event当按键已经释放时抛出,这是用修改后的值替换输入(input.set(“value”,value)的最佳时机。

请解释一下使用 keyup 时出了什么问题。 我创建了一个JSfiddle它利用了 keyup 事件。

require(["dojo/keys", "dojo/dom", "dojo/on", "dojo/domReady!", "dijit/form/TextBox"],
        function(keys, dom, on, domready, tb){
    var textbox = dom.byId("abc");
    on(textbox, "keyup", function(evt){
        //substring the code here and set the value back
        console.log(evt.target.value);
        if (evt.target.value.indexOf("?") > -1){
            evt.target.value = evt.target.value.substring(0, evt.target.value.indexOf("?"));
        }
    });
});

关于javascript - 使用 dojo 按键事件时无法避免最后一个字符输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431207/

相关文章:

javascript - domConstruct.create 之后的 dojo on 方法

javascript - mvc中的过滤选择

javascript - 配置 dojo 从 CDN 到本地时出现问题

javascript - 如何使用 window.onerror 捕获所有 javascript 错误? (包括道场)

javascript - Dojo 类对象如何工作

javascript - 在 Meteor Cordova 上设置闪屏延迟

javascript - ng-class 正在被输入标签覆盖

javascript - 如何使用多语言/多个 index.html 文件正确设置 React Router?

javascript - Facebook "just login"按钮

javascript - 以圆形裁剪所选图像,然后将其发送到服务器