2013-10-10 29 views
0

我有一個單選按鈕和與for屬性相關聯的標籤的單選按鈕組,其中一個標籤包含文本框。
我現在有這個問題,只要我點擊文本框焦點再次被刪除。 請參閱HERE - 嘗試選擇文本框輸入內容。<label for><input /><label> - 重點立即丟失

我已經tryed在onclickonfocus如下:

setInterval(function() { $('#TriggerTimeUI').focus(); }, 50) 

這似乎是工作,但我對控制datetimepicker那就是「殺」這個邏輯,因爲它是那麼顯示的所有時間(見HERE,但這個小提琴只適用於Chrome)...

有人可以幫助我嗎?

+0

爲什麼在標籤內有不同的元素文本框?點擊標籤會導致焦點被設置爲'for'元素。 – Barmar

+0

該文本框位於具有「for」屬性的標籤內。它使ID爲「TriggerMode_custom」的元素能夠關注並且文檔中的第一個ID將被考慮在內,因此單選按鈕被聚焦。 –

回答

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

+0

謝謝,你的第二個例子工作,我想怎麼樣... – ChrFin

0

你包裹下標貼標籤其中b你的文本輸入框elongs to radio button。只需結束標籤標籤,從下面開始,您的問題就會消失

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