2010-11-09 97 views
0
<blink> 
<input type="text" class="form-text required" value="" size="35" id="editfiled" name="somename" maxlength="128"> 
<div class="description"><p>some text</p> 

$('input').focus(function() { 

    $(this).next("div.description").slideToggle("slow"); 
    $(this).wrap('<div ></div>').select('input'); 
}); 
</blink> 

之後我無法輸入此輸入。jquery input.focus + wrap無法輸入輸入

我需要,如果輸入獲得焦點,它必須在div內突出顯示。

+2

爲什麼你需要的是'blink'元素? – 2010-11-09 23:50:12

回答

1

你碰到一個圓圈。

如果輸入獲得焦點,則將其包裝到div中。
由於這是標記的重建,輸入將失去焦點。如果再次單擊它,焦點將再次觸發,另一個div將纏繞輸入等等。

你可以嘗試這樣的:

$('input').focus(function() {  
    if(!$(this).data('wrapper')) 
    { 
     $(this).next("div.description").slideToggle("slow"); 

     $(this).data('wrapper',$(this).wrap('<div/>').parent()); 
     var _this=this; 
     setTimeout(function(){_this.focus();},10); 
    } 
    else 
    { 
    this.select(); 
    } 
}); 

它存儲了輸入的包裝-DIV數據(),所以如果輸入已經被包裹,功能would'nt做任何事情。

不要忘記從data()中移除包裝,如果你在某處刪除包裝在輸入中的div。

(在Firefox時的slideToggle完成選擇丟失,也許你需要另一種解決方案,以顯示/隱藏說明)

1

它應該像這樣(沒有參數的.select()調用):

$('input').focus(function() { 
    $(this).next("div.description").slideToggle("slow"); 
    $(this).wrap('<div></div>').select(); 
}); 

You can test it here

+0

仍然存在問題。輸入窗口被阻止 – sjcris 2010-11-09 23:45:53

+0

@sjcris - 在哪個瀏覽器中?這裏的演示沒有任何問題。 – 2010-11-09 23:46:45

+0

firefox 3.6.12 hm ...在鉻工作 – sjcris 2010-11-09 23:51:57