Samsung Tizen Smart TV 网络应用程序键盘 UI 上的向左或向右箭头键无法处理输入文本

Samsung Tizen Smart TV web app Left or Right arrow keys on Keyboard UI are not working with input text

我正在开发三星 Tizen 智能电视应用程序,我在其中使用 input 标签 HTML 形式。我正在文本框中输入一些内容,并尝试使用三星电视键盘上的 左右箭头 按钮左右移动光标,但它不起作用。

<input type="text" placeholder="Enter your name" id="name">

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="1.0.2" viewmodes="maximized">
    <tizen:application id="wJfsfi5g6A4.MYAPP" package="wJfsfi5g6A4" required_version="2.3"/>
    <content src="index.html"/>
    <feature name="http://tizen.org/feature/screen.size.normal.1080.1920"/>
    <icon src="icon.png"/>
    <name>MYAPP</name>
    <tizen:privilege name="http://developer.samsung.com/privilege/productinfo"/>
    <tizen:privilege name="http://developer.samsung.com/privilege/network.public"/>
    <tizen:privilege name="http://tizen.org/privilege/tv.inputdevice"/>
    <tizen:profile name="tv-samsung"/>
    <tizen:setting screen-orientation="landscape" context-menu="enable" background-support="enable" encryption="enable" install-location="auto" hwkey-event="enable"/>
</widget>

要解决此问题,您必须获取当前位置并移动到 current_position - 1(如果向左按下)或 current_position + 1(如果按下右箭头键)。

var leftmove,rightmove;
function controlLeftArrowKeys(){
    var input = document.getElementById('name');
    if(input.value.length == 0){
        return;
    }
    var currentpos =input.selectionStart; //getting current postion of cursor 
    leftmove=currentpos-1;
    setCaretPosition(input, leftmove);
}
function controlrightArrowKeys(){
    var input = document.getElementById('name');
    if(input.value.length == 0){
        return;
    }
    var currentpos =input.selectionStart;  //getting current postion of cursor
    rightmove= currentpos+1;
    setCaretPosition(input, rightmove);
}
function setCaretPosition(ctrl, pos) {
      // Modern browsers
      if (ctrl.setSelectionRange) {
        ctrl.focus();
        ctrl.setSelectionRange(pos, pos);

      // IE8 and below
      } else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
      }
    }

所以你只需调用 controlLeftArrowKeys ,controlrightArrowKeys 按下左右键盘 ui 按钮的功能