如何手动触发点击输入框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何手动触发点击输入框相关的知识,希望对你有一定的参考价值。

参考技术A

看起来这个需求很简单,在实现过程中却发现了一个问题,通过 jQuery 填充了文本框,但提交的时候却并没有提交填充后的文本值。

原因估计是文本框 MVVM 双向绑定了原网页的某个变量,jQuery 的 DOM.val() 方法并没能触发 oninput 事件,导致提交的变量值并没有变更成功

最后,用原生代码手动触发一次input事件,问题迎刃而解。

有一个页面,希望在快捷入口进入时,不需要用户点击上传按钮就打开上传框。 意思就是这个页面加载的时候,就主动触发一次组件的click事件。

Flutter 输入框实时搜索性能优化

在App开发过程中,搜索功能是必不可少的。一般对于搜索功能,要么是输入一段文字后自己手动点击搜索按钮进行搜索;要么是实时的搜索。如果输入框中每一个字符的改变都要去触发网络请求的话,会浪费用户的流量,增大服务器的负载,并且使页面比较卡顿。这显然是不可取的。举一个很简单的例子,用户想要搜索 "ABC" ,如果直接监听文本变化,会向服务器发送3次请求。显然这会造成差的用户体验并浪费网路资源。

所以我们可以做一个延迟加载、当文本输入变化超过500ms时进行功能搜索:

//快速搜索
   static searchDelay(Function doSomething, durationTime = 500) 
    timer?.cancel();
    timer = new Timer(Duration(milliseconds: durationTime), () 
      doSomething?.call();
      timer = null;
    );
  

可以在输入框基类进行封装:

onChanged: (value) 
          if (!_textEditingController.value.composing.isValid) 
            setState(() 
              inputKeywords = _textEditingController.text;
            );
            if (widget.onChanged != null) 
              Utils.searchDelay(() 
                widget.onChanged(inputKeywords);
              );
            
          
        ,

这样便能达到文本搜索优化的效果。

以上是关于如何手动触发点击输入框的主要内容,如果未能解决你的问题,请参考以下文章

带图标的输入框触发点击事件

解决TextInput点击输入框外面没有触发onBlur

js手动控制输入框的光标位置

点击/单击选择输入/文本框字段的内容

Flutter 输入框实时搜索性能优化

Flutter 输入框实时搜索性能优化