【问题标题】:TextEvent.TEXT_INPUT does not work as expectedTextEvent.TEXT_INPUT 无法按预期工作
【发布时间】:2021-08-12 01:40:17
【问题描述】:

您好,我遇到了另一个问题,但这个问题很奇怪,无法按预期工作
我有一个文本输入组件,我向它添加了一个函数,当用户键入文本时它开始在数组中搜索,问题是当我键入第一个字母时输出为空白,当我键入第二个字母时函数读取只有第一个字母 这是代码
workArray 是存储 workTitle 和 workCost 的对象

work.addEventListener(TextEvent.TEXT_INPUT, inputInWorkBox);
function inputInWorkBox(TextEvent) {
    trace("Function worked: "+work.text.toLowerCase());
    todayWorkList.removeAll();
        var typedWork = work.text.toLowerCase();
        var fullWork:String = "";
    for (i = 0; i <= workNumber; i++) {
        fullWork = (workArray[i].workTitle).toLowerCase();
        if (fullWork.search(typedWork) != -1) {
            todayWorkList.visible = true;
            todayWorkList.addItem({
                label: (workArray[i].workTitle),
                data: workArray[i]
            });
        }
    }
}

这是输出


函数有效://我输入了 a
函数有效:a // 我输入了 ab
函数工作:ab // 我输入了 abc
函数工作:abc // 我输入了 abcd

顺便说一句:我不想使用 CHANGE 事件,因为文本输入中的数据已被其他函数更改以显示一些数据,我希望它仅在以下情况下调用该函数该特定文本输入中的用户类型
提前谢谢

【问题讨论】:

    标签: actionscript-3 air adobe-animate


    【解决方案1】:

    这是CHANGE event的引述:

    在修改控件值后调度,与 textInput 不同 事件,在值被修改之前调度。

    这意味着 TextEvent.TEXT_INPUTTextField 中的文本实际更改之前 被调度,这与您得到的结果完全一致(尽管TEXT_INPUT chapter 本身没有明确提及)AND 可以按预期工作EXACTLY

    然后,文档指出TEXT_INPUT event 有一个 text 属性,其中包含 TextField 的新内容。

    因此,您的代码应该类似于

    work.addEventListener(TextEvent.TEXT_INPUT, onInput);
    
    // This is a wrong thing to do: inputInWorkBox(TextEvent)
    // Do not declare entities with the names similar to class names.
    // Use some simple variable names instead.
    function onInput(e:TextEvent):void
    {
        // Extract the new text (which is not passed to the TextField yet).
        var aText:String = e.text.toLowerCase();
        
        trace("The new text is:", aText);
        
        // Proceed processing aText variable from here on.
    

    【讨论】:

    • 我已经在我的代码var typedWork = work.text.toLowerCase(); 的第 5 行尝试过,并得到了相同的结果,但我很无奈,所以我使用了 CHANGE 事件,它可以按我的意愿工作,如果文本是仅当我在框中键入时才从其他功能更改谢谢
    • @AliNabeel 不,work.texte.text 不同。请重新阅读我的解释,直到您发现访问没有最终 textTextField 和读取具有最终文本的事件属性之间的区别。跨度>
    • 谢谢,我没注意到,帮助很大
    猜你喜欢
    • 2013-12-23
    • 2014-12-09
    • 2016-01-13
    • 2020-09-21
    • 2011-08-17
    • 2012-04-29
    • 2019-02-04
    • 2014-12-02
    • 2013-12-02
    相关资源
    最近更新 更多