#cakephp #cakephp-1.3
#cakephp #cakephp-1.3
Вопрос:
Просто небольшой вопрос..
Я пытаюсь сгенерировать текстовый ввод, где значение по умолчанию вложено в тег с помощью встроенного css..просто чтобы он выглядел меньше и серее, чем обычный ввод.
echo $this->Form->input( 'address', array('div'=>false, 'label'=>'', 'default'=>'<span style="font-size: 0.6em;color:#e3e3e3;">put your address here</span>', 'size'=>'50' ) );
после того, как пользователь нажмет, значение по умолчанию будет удалено, оставив его пустым.
Однако cakephp генерирует входные данные со значением, содержащим html-теги, т. Е. . Как мне заставить cakephp отфильтровать html со значением по умолчанию?
Я забыл, какой вариант использовать в этой ситуации, и я перепробовал все, что смог придумать. Я помню, что могу сделать это, просто добавив какое-то значение в массив опций, например 'html'=>false
.
Ответ №1:
Поместите вспомогательный текст в свои ярлыки. Если вы введете значение по умолчанию в виде HTML-строки, на входе будет отображаться HTML, поскольку он не отображает HTML внутри него.
Если вы добавите дополнительный HTML к своей метке, вы могли бы использовать это http://trevordavis.net/blog/jquery-inline-form-labels для наложения меток на входные данные.
echo $this->Form->input( 'address', array('div'=>false, 'label'=>'put your address here','size'=>'50' ) );
Кроме того, этот метод позволяет вам применять css извне вместо встроенного — что всегда лучше.
Комментарии:
1. извините, я имел в виду, что HTML находится внутри ввода в качестве значения. не в качестве метки для ввода.
Ответ №2:
Я не знаю ни о каком способе заставить поле ввода отображать html внутри себя. В API также нет ничего, что подсказывало бы, чего вы хотите. Есть возможность встроить его в div и включить что-либо до, после и между меткой и вводом. Я думаю, вам нужно использовать javascript для выполнения того, что вы хотите сделать.
<style>
.default {font-size: 0.6em;color:#e3e3e3;}
.normal {color:black;}
</style>
<script language='javascript'>
function change(input)
{
input.classList.add("normal");
if (input.value == "enter text here")
input.value = "";
}
</script>
<form>
<input id='test' class='default' type='text' value='enter text here' onfocus='change(this);'>
</form>
Комментарии:
1. неужели нет никакого способа? Раньше я думал, что это можно сделать. Я унаследовал проект cake раньше, и я думаю, что у него была форма, в которой я мог использовать теги <b></b> <em></em> в одном из его входных данных. Возможно, моя память подводит меня. Мне нравится ваш ответ об использовании JS, хотя я просто подумал, что, возможно, это можно сделать в cake.
2. Хотя вы можете изменить стиль поля ввода, вы не можете заставить его отображать html в нем. Если бы вы работали над предыдущим проектом, в котором использовалось это, я бы ожидал, что они расширяли FormHelper пользовательским кодом.