2013-12-18 3 views
3

У меня есть поле URL в моей форме. Для этого валидатор должен иметь перед собой http://, , который, как я думаю, многие люди не поймут.HTML - Undeletable placeholder в элементе ввода

Могу ли я иметь «заполнитель», который пользователь не может удалить или написать перед ним?

Пример: HTTP: // myinputhere.com

<input type="url" placeholder="http://">

+1

как форма с текстом «http: //»? – joseramonc

+3

Заполнитель не может использоваться для этого. Текст заполнителя исчезнет, ​​когда пользователь начнет вводить код –

+0

@techfoobar. Валидатор проверяет только, что находится в '' – Claudio

ответ

3

Заполнитель не сцепить placeholder текст, вводимой пользователем текста, это просто для информации, которую вы хотели бы предоставить ваш пользователи, как некоторые программисты не используют label вместо этого они пишут placeholder, например

<input type="text" placeholder="Enter Username Here" /> 

Так вот у НУ может сделать это, либо вы можете иметь предустановленный http:// значение ..

<input type="url" value="http://" /> 

Или вы можете использовать JavaScript или JQuery для клиента проверки на стороне вместо HTML5 type="url", который даст смысл только для вашей семантики, но вы не можете полагаться только для проверки HTML5.


Кроме того, если вы хотите сохранить вашу семантику, используя type со значением search или url, чем вы можете отключить проверку HTML5, используя novalidate атрибут для form тега.

ИЛИ

Вы можете использовать несколько поле, один с type набором для url и других к text и вы можете объединить оба значения поля ..

input[type=url] { 
    width: 40px; 
} 

<input type="url" value="http://" readonly /> 
<input type="text" /> 

Demo


Примечание. Использование проверки на стороне клиента, например, HTML 5 и JavaScript могут быть легко отключены вашими пользователями, я бы порекомендовал вам иметь сервер боковая проверка, если это имеет к вам большое значение. Но полагаться на клиента боковая проверка ТОЛЬКО не очень хорошо.

+1

Добавьте JS, чтобы вернуть его, если его нет ... – JNF

+0

Использование замещающего вместо ярлыка строго запрещено стандартом HTML 5 - можете ли вы изменить акцент в своем ответе от * вместо * на * дополнительную информацию *. – pwdst

+0

Я действительно новичок в JS, поэтому я был бы признателен, если бы вы дали мне пример кода. 'Value' отлично работает, но его можно удалить, что не очень хорошо. – Claudio

2

Почему бы вам не использовать javascript для этого. Я предполагаю, что у вас есть какие-либо HTML-тег, как этот

<input id="test" type="url" onclick="testJS()" placeholder="http://"> 

и попробовать этот следующий JavaScript

function testJS(){ 
    var a = document.getElementById("test"); 
    a.value = "http://"; 
} 
+1

Примечание: Это не удастся, если JS отключен –

+0

1. Вы ** можете ** удалить его. 2. Он удаляет все из пути 'http: //', если щелкнуть снова. – Claudio

+0

@ Mr.Alien Пользователь, который отключает javascript в эти дни, заслуживает плохого интерфейса. –

0

Вы можете использовать Javascript и JQuery, чтобы сделать это.(До сих пор в поисках решения)

Или вы можете поставить HTTP: // текст в текстовом поле с:

<input type='url' value='http://'> 

Или вы можете добавить текст перед текстовым полем, а затем принимать входные данные быть без HTTP: // текст

<p style='display: inline-block'>http://</p><input type='url' style='display: inline-block'> 

Вы также можете использовать позиционирование CSS, чтобы показать поверочный элемент на поле ввода, а затем добавить отступы в поле ввода так, что пользовательский ввод не будет идти над элемент span.

0

Вы можете отобразить поверочного элемент над входом, как это:

HTML:

<div class="wrapper"> 
    <input type="url" /> 
    <span>http://</span>  
</div> 

CSS:

.wrapper { 
    position: relative; 
} 
input { 
    padding-left: 48px; 
} 
.wrapper span { 
    position: absolute; 
    left: 2px; 
} 

Example

+0

Не желая казаться, что я нахожусь на вас, как это помогает сделать входное значение действительным в том случае, если пользователь опустил протокол (http: // или https: //) из своего URL-адреса? Если что-то будет фактом предоставления http: //, это сделает пользователя более вероятным опустить протокол, поскольку он уже предоставлен для вас. Это также исключает https: // сайты. На этот раз я не проголосовал за вас, но, пожалуйста, рассмотрите ваш ответ. – pwdst

1

Нет, вы не можете иметь начальное содержание которые не могут быть удалены.

Вопрос подразумевает неправильный подход, поскольку a) пользователи могут нуждаются в для удаления http: // например. если им нужно ввести https: URL, b) заполнители не предназначены для этого, c) если вы используете value="http://", это не значимое значение по умолчанию, и оно делает контроль изначально недействительным, d) если вы используете type="url", то вы - запросив для элемента управления, который принимает абсолютный URL как значение и оставляет его в браузерах для его реализации.

Что вы можете сделать, чтобы помочь пользователям, которые не знают, как ввести абсолютный URL, чтобы использовать атрибут title, который имеет специальную функцию в контексте, как это: его значение будет появляться сообщение об ошибке отображается браузером, если пользователь пытается отправить форму, когда значение управления недействительно. Пример:

<input type="url" title="An absolute URL (usually starts with http://)"> 
Смежные вопросы