2012-05-23 67 views
1

我不知道這個問題的正確標題是什麼。我有「靜態佔位符」輸入框,例如,對於URL jsfiddle.net/manyahin/MxRqX輸入的靜態佔位符

<div class="controls"> 
<input type="text" /> 
<span>http://</span> 
</div> 

用戶無法刪除HTTP:在此之後//和類型的文本。跨度有餘裕:輸入上方的位置爲負值,輸入具有文本標識以獲得跨度的自由空間。

當我點擊輸入,遊標設置在輸入開始,在http之前。當我開始輸入時,光標移到正常位置。如何解決這個錯誤,或者請給我一個替代方法來做到這一點。對不起,我的英語不好。

+1

你能後的你想實現在http://jsfiddle.net/ /修復,使我們可以在它的工作是什麼工作版本? – verisimilitude

+1

你可能不應該在這裏做任何你想做的事情,但如果你想告訴用戶他應該輸入一個沒有http://前綴(這將暗示)的URL,那麼你可以使用'http :// '。或者,更好的是,只需使用。通常情況下,人們會複製和粘貼一個URL(並且應該這樣做),所以試圖讓它們省略「http://」是一件討厭的事情,而不是方便。 –

+0

當然,http://jsfiddle.net/manyahin/MxRqX/ –

回答

1

如果輸入文本始終需要以http://開頭,則更簡單的方法是將其作爲標籤放在字段之前,而不是放在其中,然後在後端添加http://。或者您可以在後端捕獲它,並從輸入字段中讀取文本,並在用戶未輸入時將http://添加到輸入文本中。

另一種方式是通過jquery,您可以在其中設置文本框的值爲http://與用戶輸入的任何文本。

第三個不太好用的方法是使用兩個輸入字段並使用css來定位和設置它們的樣式以顯示爲一個。將第一個字段值設置爲http://(假設它始終爲http://)並將其設置爲只讀。

1

在css中使用:before怎麼樣?

給這個一去.... http://jsfiddle.net/MxRqX/3/

+0

我正在尋找像你這樣的答案,但是你提供的例子不起作用。 – Shimmy

+0

您不能在輸入等元素上使用僞元素,如:before和:after。內容呈現需要位於容器內部,並且輸入不是容器。 –

+0

但是,您可以將它放在佔位符:)上,如下所示:input :: - webkit-input-placeholder:before。不要忘記爲交叉瀏覽器解決方案使用所有「moz,ms,webkit」前綴。 –