单击被忽略:与表单控件关联的标签元素存在问题

2024-01-10

我已使用“for”属性将标签元素关联到表单字段。当我在表单字段下方显示验证消息时,会出现此问题。

例如,在下面的演示中,表单字段 1 有一个必需的验证 onblur,

  1. 单击标签选择表单字段 1
  2. Now click在表单字段 2 标签上,应将焦点设置为表单字段 2,但焦点未设置并且点击被忽略.

有什么想法吗?

$(function () {
	$('#formfield1').blur(function() {
   	$('#errorMessage').text('Form field is required').show();
  });
  var counter = 1;
  $('*').on('focus blur', function (e) {
  	console.log(counter++ + ' ' + e.type + ' ' + this.id);
  })
  
  $('*').click(function (e) {
     e.stopImmediatePropagation()
     console.log(counter++ + ' ' + e.target.id + ' clicked ');
  });
});
.hidden { display: none; }
div { margin: 10px; }
label { width: 100px; display: inline-block; }
.as-console-wrapper { max-height: 65px !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="height: 300px; overflow: hidden;">
  <div>
    <label for="formfield1">Form Field 1</label> <input type="text" id="formfield1" />
  </div>
  <div id="errorMessage" tabindex="1" class="hidden">

  </div>
  <div>
    <label for="formfield2">Form Field 2</label> <input type="text" id="formfield2" />
  </div>

</div>

这为我解决了这个问题:

$('#formfield1').blur(function() {
    window.setTimeout(function () { $('#errorMessage').text('Form field is required').show(); }, 100);
});

不知道为什么,但它有效。仅供参考 - 我尝试将超时设置为 50,但没有成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击被忽略:与表单控件关联的标签元素存在问题 的相关文章

随机推荐