<label for =“”> <input /> <label> - 焦点立即丢失</label> </label>

时间:2013-10-10 07:54:25

标签: jquery html radio-button focus

我有一个单选按钮组,其中包含带有for属性的单选按钮和相关标签,其中一个标签包含一个文本框。
我现在遇到了问题,只要我单击文本框,焦点就会再次被删除。 请参阅HERE - 尝试选择文本框输入内容。

我已经在onclickonfocus

中尝试了以下内容
setInterval(function () { $('#TriggerTimeUI').focus(); }, 50)

这似乎有效,但我在该控件上有一个datetimepicker,这就是“杀死”这个逻辑,因为它随后一直显示出来(见HERE,但这个小提琴只适用于铬)...

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

问题是因为您将标签的for属性设置为兄弟元素。这意味着将在属性中指定的元素上引发单击事件,因此为什么焦点会立即从文本框中丢失。删除for属性,文本框保持焦点:

<input type="radio" name="TriggerMode" id="TriggerMode_custom" value="custom" checked="checked" />
<label> <!-- remove the 'for' here -->
    <input style="width: 230px;" type="Text" id="TriggerTimeUI" />
    <br />
</label>

Example fiddle

如果您需要这样的行为,当有人点击文本框时会选择单选按钮,您需要手动执行此操作:

$('#TriggerTimeUI').focus(function() {
    $('#TriggerMode_custom').prop('checked', true);
});

Another example fiddle

答案 1 :(得分:0)

您已将输入文本框包装在属于单选按钮的label标签下。只需结束下面开始的标签标签,您的问题就会出现

<label for="TriggerMode_custom"></label>
        <input style="width: 230px;" type="Text" id="TriggerTimeUI" /><br />