如何在我的 HTML 自定义元素中接收焦点和选择事件

     2023-02-23     154

关键词:

【中文标题】如何在我的 HTML 自定义元素中接收焦点和选择事件【英文标题】:How can I receive focus and select event in my HTML custom element 【发布时间】:2019-10-19 20:08:16 【问题描述】:

我正在构建一个自定义 HTML 元素。

自定义 HTML 元素扩展了表格单元格元素。

我在这个自定义元素中包含了一个输入文本框。

当自定义元素获得焦点或选择事件时,我希望输入文本框获得这些事件。

这是我的代码:

class DateCell extends HTMLTableCellElement 
				constructor() 
					super();
					this.textBox = document.createElement("input");
					this.textBox.type = "text";
					this.appendChild(this.textBox);
					$(this).addClass("borderCell");
					$(this).addClass("dateCell");
				
				focus(e)
				
					this.textBox.focus();
				
				select(e)
				
					this.textBox.select();
								
				set textContent(t)
				
					this.textBox.value = t;
				
				get textContent()
				
					return this.textBox.value ;
				
				set value(v) 
				
					this.textBox.value = v;
					switch (v)
					
						case "a":
								this.textBox.className="aShiftColor";
								break;
						case "b":
								this.textBox.className="bShiftColor";
								break;
						case "c":
								this.textBox.className="cShiftColor";
								break;		
					
				
				get value() 
					return this.textBox.value;
				
			
			customElements.define('datacell-string',
				DateCell, 
					extends: 'td'
				);
			$(document).ready(function() 
				var t = document.createElement("table");
				var row = t.insertRow(t.rows);
				var cell1 = new DateCell();
				var cell2 = new DateCell();
				var cell3 = new DateCell();
				row.appendChild(cell1);
				row.appendChild(cell2);
				row.appendChild(cell3);
				
				$(cell1).val("a");
				cell2.value = "c";
				cell2.select();
				$(cell3).val("b");
				$(cell3).focus();
				$(document.body).append(t);
				$("td").each(function()
					console.log(this.value);
				);
			);
td input[type="text"]			
			
				//color:white;
				border:none;
				//border:1px solid black;
				height:100%;
				width:100%;
				text-align:center;
				box-sizing: border-box;
				-moz-box-sizing: border-box;
				-webkit-box-sizing: border-box;
			
			td input[type="text"]:focus 
			
				outline: none;
			
			table 
			
				border-spacing: 0;
				border-collapse: collapse;
						
			.aShiftColor
			
				background-color:#ff99cc;
			
			.borderCell
			
				border:1px solid #e0e0e0;
			
			.bShiftColor
			 
				background-color:#ffffcc;
			
			.cShiftColor
			
				background-color:#ccffcc;
			
			.dateCell
			
				margin:0px;
				width:25px;
				padding: 0px;
				text-align: center;
				font-size:17px;
			
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

很遗憾,这些输入框都没有被选中或处于焦点位置。

【问题讨论】:

【参考方案1】:

经过多次试验,我发现由于所有的DateCells都没有连接到附加到DOM,所以“选择”和“焦点”效果没有显示出来。

因此,我更改了以下代码:

   ..............
   cell2.select();
   $(cell3).val("b");
   $(cell3).focus();
   $(document.body).append(t);

  ..............
  $(cell3).val("b");
  $(document.body).append(t);
  cell2.select();
  $(cell3).focus();

,然后就可以了!

【讨论】:

辅助功能 - 如何在元素上设置自定义选项卡焦点顺序

】辅助功能-如何在元素上设置自定义选项卡焦点顺序【英文标题】:Accessibility-Howtosetcustomtabfocusorderonelements【发布时间】:2022-01-0107:50:07【问题描述】:我的用例是一个传统的表单页面。我的页面在右上角包含几个按钮,后面... 查看详情

(flex mobile)如何在我的自定义布局中添加元素

】(flexmobile)如何在我的自定义布局中添加元素【英文标题】:(flexmobile)howtoaddelementinthemycustomlayout【发布时间】:2012-05-0609:48:58【问题描述】:这是我的代码:publicclassmy_LayoutextendsLayoutBasepublicfunctionmy_Layout()super();varb:Button=newButton;... 查看详情

当我的自定义小部件有焦点时如何指定不同的图像?

】当我的自定义小部件有焦点时如何指定不同的图像?【英文标题】:Howtospecifydifferentimageswhenmycustomwidgethasfocus?【发布时间】:2010-10-0719:20:25【问题描述】:我正在尝试在我的资产文件中设置一个可绘制的选择器,如下所示:*... 查看详情

如何从 index.html 自定义元素标签接收数组作为@Input?

】如何从index.html自定义元素标签接收数组作为@Input?【英文标题】:Howtoreceiveanarrayas@Inputfromindex.htmlcustomelementtag?【发布时间】:2021-12-1209:01:24【问题描述】:我创建了一个angular的自定义元素。元素标签如下图:<test-recouserId="... 查看详情

如何在我的 Uppy 自定义设置中获取 Blob 图像预览

】如何在我的Uppy自定义设置中获取Blob图像预览【英文标题】:HowtogettheBlobimagepreviewinmyUppyCustomsetup【发布时间】:2021-04-2109:50:29【问题描述】:我学习了React,现在我使用Uppy以便用户可以选择要上传的文件。当用户选择他的文件... 查看详情

如何使用自定义钩子和 useContext 仅渲染相关组件

】如何使用自定义钩子和useContext仅渲染相关组件【英文标题】:HowtorenderonlytheconcernedcomponentwithacustomhookanduseContext【发布时间】:2021-09-1208:04:37【问题描述】:我正在尝试基于useContext创建一个自定义钩子useFocus,以便仅将焦点设... 查看详情

如何创建自定义响应式表单元素?

】如何创建自定义响应式表单元素?【英文标题】:HowdoIcreateacustomReactiveFormElement?【发布时间】:2019-06-0818:59:58【问题描述】:我正在使用Angular中的反应式表单,我正在尝试创建一个自定义表单元素,以便我可以在我的表单中... 查看详情

如何在日期选择器中添加自定义模板。?

】如何在日期选择器中添加自定义模板。?【英文标题】:Howtoaddcustomtemplateinadatepicker.?【发布时间】:2018-05-2214:55:17【问题描述】:我在我的项目中使用bootstrapdatepickerhttp://bootstrap-datepicker.readthedocs.io/en/latest/,我想知道如何为... 查看详情

如何在我的其他应用程序中使用自定义 SSO?

】如何在我的其他应用程序中使用自定义SSO?【英文标题】:HowtouseacustomSSOinmyotherapps?【发布时间】:2021-06-2416:59:57【问题描述】:我试图在我的应用程序中使用自定义SSO时碰壁了,所以我想我会退后一步,在这里提问。我按照t... 查看详情

如何在 iOS 中完全自定义 TabBar

】如何在iOS中完全自定义TabBar【英文标题】:HowdoIfullycustomiseTabBariniOS【发布时间】:2017-02-0106:51:59【问题描述】:我需要在我的iOS应用程序中自定义TabBar,如图所示我需要更改背景颜色、未选择的图像色调颜色和选择的图像色... 查看详情

如何在我的自定义视图中使用标准属性 android:text?

】如何在我的自定义视图中使用标准属性android:text?【英文标题】:Howtousestandardattributeandroid:textinmycustomview?【发布时间】:2013-08-0313:14:20【问题描述】:我编写了一个扩展RelativeLayout的自定义视图。我的视图有文本,所以我想使... 查看详情

如何在 codeigniter 中使用自定义字体和图标

】如何在codeigniter中使用自定义字体和图标【英文标题】:howtousecustomfontsandiconsincodeigniter【发布时间】:2016-02-1512:08:51【问题描述】:猛击所有人我想在我的视图中使用来自flaticon.com的自定义图标http://successpermis.com/css/flaticon.html... 查看详情

如何使用自定义元素点击事件更新范围值?

】如何使用自定义元素点击事件更新范围值?【英文标题】:Howtoupdatethescopevalueusingthecustomelementclickevent?【发布时间】:2015-09-1404:35:49【问题描述】:在我的directive中,我正在根据index值替换模板。当用户点击模板时,我需要将... 查看详情

在我的应用程序中使用自定义 UICollectionViewCell 时如何停止内存警告

】在我的应用程序中使用自定义UICollectionViewCell时如何停止内存警告【英文标题】:HowtostopmemorywarningwhenusingcustomUICollectionViewCellinmyapp【发布时间】:2014-04-0509:10:29【问题描述】:我做错了什么?我已经使用parse.com仪表板上传了一... 查看详情

如何在屏幕外窗口中呈现焦点指示器?

】如何在屏幕外窗口中呈现焦点指示器?【英文标题】:Howtorenderfocusindicatorsinanoffscreenwindow?【发布时间】:2018-03-2010:43:32【问题描述】:我正在尝试使用Qt在虚拟现实中实现自定义用户界面。我正在使用QQuickRenderControl将QML中定... 查看详情

自定义 OSK:收听 TextBox 焦点

...框控件的文本和选择属性/功能来工作。我的主要问题是如何找到合适的文本框来注 查看详情

如何自定义选择器视图

】如何自定义选择器视图【英文标题】:Howtocustomizepickerview【发布时间】:2016-10-1904:44:40【问题描述】:我想在我的项目中自定义选择器视图。在pickerview单元格中添加不同类型的图像并且还想减少pickerview高度。我给你看图片以... 查看详情

如何在奏鸣曲中获取字段类型的自定义值?

】如何在奏鸣曲中获取字段类型的自定义值?【英文标题】:Howtogetacustomvalueforafieldtypeinsonata?【发布时间】:2021-09-0223:41:28【问题描述】:在Sonata中,当我创建带有choiceType的合同时,用户可以选择contract1或contract2,在我的数据... 查看详情