我正在尝试在按键事件上调用dojo。我想要达到的目标是,一旦遇到'%',我想开始阅读后续角色,一旦遇到'?',我想要分-string文本并用子弦文本替换框中的整个文本。
虽然我能够对文本和所有内容进行细分,但我面临的问题是'?'它出现在子弦文本之后。
即'?'按下,字符串被子字符串,并在框中替换所需的文本。但是,文字附有'?',我不想要。
E.g。 我输入 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中尝试过。
答案 0 :(得分:2)
虽然你已经尝试了" 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("?"));
}
});
});
答案 1 :(得分:0)
在您的文本框中插入字母后(或者您用于收集输入的任何内容)触发了按键事件,因此您在字符串中收到问号。所以我会修改你的代码:
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
evt.target.value = evt.target.value.slice(evt.target.value.indexOf("%") + 1, -1);
});
});