2013-08-03 1 views
0

У меня есть простой PHP и JQuery контактной форма (3 поля: имя - адрес электронной почты - сообщение), чье поле ввода кодируется следующим образом:По умолчанию поля формы Значения шутите с формой действиями

<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="requiredField"/> 

Я хотел бы это поле имеет значение по умолчанию, а не пустое. В то же время я не стал бы доверять использованию атрибута placeholder, поскольку он не поддерживается повсеместно.

Я нашел этот JQuery скрипт, который делает работу превосходным образом:

<script> 
$(function() { 
$(".contact_form_field") 
.focus(function() { 
var $this = $(this); 
if (!$this.data('default')) { 
$this.data('default', $this.val()); 
} 
if ($this.val() == $this.data('default')) { 
$this.val('') 
.css('color', '#000'); 
} 
}) 
.blur(function() { 
var $this = $(this); 
if ($this.val() == '') { 
$(this).val($this.data('default')) 
.css('color', '#666'); 
} 
}) 
.css('color', '#666') 
}); 
</script> 

Однако, чтобы сделать его работу я должен был изменить значение атрибутов поля для desidered текста заполнителя:

<input type="text" name="contactName" id="contactName" value="Name" class="requiredField"/> 

Это предсказуемо, кажется, вмешиваться в действие формы, которые должны предотвратить почту отправляется, если есть пустые поля:

if(trim($_POST['contactName']) === '') { 
    $hasError = true; 
} else { 
    $name = trim($_POST['contactName']); 
} 

Я думал, что я просто должен был изменить строку

if(trim($_POST['contactName']) === 'Name') { or 

if(trim($_POST['contactName']) == 'Name') { or 

, но это не похоже на работу. Почта отправляется, даже если поле остается нетронутым (не пустым, так как отображается текст «Имя»).

Я затрудняюсь понять, что я делаю неправильно, любые данные (извините за каламбур x_x) были бы весьма признательны.

+1

Существует также плагин jQuery под названием «водяной знак», который не влияет на фактическое значение ввода. – DevlshOne

ответ

0

заполнители вполне готовы использовать сегодня. Но если вы все еще не доверяете этому, вы можете использовать старое решение на основе onfocus и onblur атрибутов. Вот пример:

<input onfocus="if(this.value==='default value') this.value=''" onblur="if(this.value==='') this.value='default value'"> 
0

создать массив со всеми значениями и тест по умолчанию, чтобы увидеть, если поданное значение является частью значения по умолчанию

$defaultValue = array('', 'Name'); 
if(in_array(trim($_POST['contactName']), $defaultValue) { 
    $hasError = true; 
} else { 
    $name = trim($_POST['contactName']); 
} 
+0

Спасибо всем за отличную и быструю обратную связь .. StackOverflow как обычно! Хотя я разочарую вас, потому что я пошел на самое ленивое решение и установил плагин Watermark, как это было предложено @DevlshOne. :( Еще раз спасибо! –

Смежные вопросы