在激活TalkBack的情况下尝试单击ReactJS中的ReadOnly输入

问题描述

我正在提出以下问题。我正在尝试创建一种功能,当您单击输入时,会出现一个弹出框,您选择几个选项,然后在该输入上设置值(类似于日历)。

您不能在输入上写任何东西,单击时键盘也不应该出现在移动设备上。因此,为解决此问题,将using System; using System.Linq; using System.Xml; using HtmlAgilityPack; namespace Parser { class Program { static void Main(string[] args) { var html = @"https://terrikon.com/football/spain/championship/"; HtmlWeb web = new HtmlWeb(); var htmlDoc = web.Load(html); var rows = htmlDoc.DocumentNode.SelectNodes("//*[@id='champs-table']//tr").Skip(1); int[] TeamId = new int[20]; int[] WinT = new int[20]; int[] DrawT = new int[20]; int[] LoseT = new int[20]; int i = 0; foreach (HtmlNode row in rows) { int id =Convert.ToInt32(row.SelectSingleNode("./td[@class='team']/a").GetAttributeValue("href",string.Empty).Split('/').Last().Trim()); string team = row.SelectSingleNode("./td[@class='team']").InnerText.Trim(); //string win = row.SelectSingleNode("./td[@class='win']").InnerText.Trim(); int win =Convert.ToInt32(row.SelectSingleNode("./td[@class='win']").InnerText.Trim()); //string draw = row.SelectSingleNode("./td[@class='draw']").InnerText.Trim(); int draw =Convert.ToInt32(row.SelectSingleNode("./td[@class='draw']").InnerText.Trim()); //string lose = row.SelectSingleNode("./td[@class='lose']").InnerText.Trim(); int lose =Convert.ToInt32(row.SelectSingleNode("./td[@class='lose']").InnerText.Trim()); TeamId[i] = id; WinT[i] = win; DrawT[i] = draw; LoseT[i] = lose; Console.WriteLine($"#{id} {team}: {win},{draw},{lose}"); i++; } for ( i = 0; i < 20; i++) { Console.WriteLine(TeamId[i] + " /" + WinT[i]+" /"+DrawT[i]+ " /"+LoseT[i]+ " /"); } } } } 参数添加到输入中。

该示例可以总结为“单击输入然后设置值”,如以下代码所示:

using System;
using System.Linq;
using System.Xml;
using HtmlAgilityPack;

namespace ParseGoogle
{
    class Program
    {
        static void Main(string[] args)
        {
           // var html = @"https://terrikon.com/football/spain/championship/";

            var html = @"https://www.google.com/"; // it is just example. Here Could be any request by google

            HtmlWeb web = new HtmlWeb();
            var htmlDoc = web.Load(html);

            string result = @"<div class=""r"">
                        </div>";
            var rows = htmlDoc.DocumentNode.SelectNodes(result).Skip(1);

            string str = "";

            foreach (HtmlNode row in rows)
            {
                string Str = row.SelectSingleNode("./h3").InnerText.Trim();

                str = Str;
            }
        }
    }
}

So it acts like this with a simple click on the input

这是非常基本的,并且在移动设备和台式机上均可正常运行。但是,当用户在Android上使用 TalkBack 时,问题就开始了。由于它只是一个readOnly输入,因此它不会与输入交互,它只会读取它,因此该函数不会执行。并且const InputContainer = () => { const [inputValue,setValue] = useState("") return ( <div> <input onClick={() => setValue("value set")} readOnly value={inputValue} /> </div> ) }删除时,它没有单击它,而是弹出了键盘

几天来,我一直在寻找解决方案,这些解决方案不涉及将事物更改为非输入的另一种组件,因为我们一直在寻找是否有解决方法首先,不要更改已经确定的表格。

任何帮助都很好,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)