Во-первых, это довольно просто, если вы просто идете по основам ColdFusion. Но так как он здесь, я хотел бы добавить к ответам. В соответствии с вашим вопросом, вам нужно проверить, пусты ли поля формы, или нет. Чтобы это было ясно, ColdFusion обрабатывает значения empty
и NULL
так же.Так что, если вы просто хотите, чтобы проверить пустые значения, то почему бы не использовать этот простой код:
<cfif form.firstname EQ ''>
<!--- code, if it's empty --->
<cfelse>
<!--- code, if not empty --->
</cfif>
ИЛИ, чтобы быть уверенным, что все пробельные символы рассматриваются как пустая строка, а также, здесь полное решение (обратите внимание, что мы используем функцию с регулярным выражением заменить с помощью функции reReplace в ColdFusion):
<cfif reReplace(form.firstName, "[[:space:]]", "", "ALL") EQ '' />
<!--- code, if it's empty --->
<cfelse>
<!--- code, if not empty --->
</cfif>
в качестве альтернативы, чтобы сделать ваш код будет выглядеть более элегантный и чистый, использовать третичный оператор (<condition>?<value if true>:<value if false>)
в ColdFusion, что позволяет избежать написания длительных условные проверки и одинаково эффективны, как обычный синтаксис тега <cfif><cfelse></cfif>
, который мы часто используем.
Итак, для второй части вашего вопроса, когда вам нужно использовать его внутри других полей ввода, вы делаете вышеуказанную проверку внутри самого поля <cfinput>
, а не обертываете его внутри длинного условного блока. Вы понимаете, что я имел в виду. Так что, я думаю, что это было бы короче и элегантный способ борьбы с ним:
<cfinput
type="text"
name="firstName"
id="firstName"
value="#(reReplace(form.firstName, '[[:space:]]', '', 'ALL') EQ ''?'':'#form.firstName#')#"
>
ИЛИ даже поставить более ясно, просто создать свою собственную функцию с именем isEmpty()
или что угодно (я надеялся в начале, что ColdFusion должен иметь эту простую функцию, но, к сожалению, нет). Таким образом, логика проверки пустого значения будет включена в вашу функцию, и ваш код будет более читабельным и организованным.
<cfinput
type="text"
name="firstName"
id="firstName"
value="#(isEmpty(form.firstName)?'':'#form.firstName#')#"
>
Комментарий на ваш вопрос Джош является хорошим, вы можете использовать <cfparam>
, чтобы убедиться, что form.firstName
всегда определяется. Ответы James A Mohler и Matt Busche здесь очень похожи, я не знаю, почему у Джеймса нет никаких голосов за его ответ.
Я надеюсь, что это было полезно.
Нет смысла использовать 'cfinput' использовать регулярные' form' и 'input' теги для создания вашего HTML. –
Помимо прямого ответа на ваш вопрос, вы всегда * хотите убедиться, что поле существует первым, поскольку проверка значения несуществующего поля в CF является ошибкой. Даже если вы думаете, что он всегда должен существовать, пользователь может использовать свои инструменты для браузера, чтобы изменить форму перед отправкой. Таким образом, вы можете использовать что-то вроде ''. Или вы можете использовать '', чтобы присвоить ему значение по умолчанию. –
Josh
В отношении вышеприведенного комментария нет причин использовать cfinput. Хотя я не использую cfinput, следует отметить, что в теге применяется форматирование HTML. Поэтому, если значение form.firstname содержит не дружественный символ HTML, то тег автоматически позаботится об этом. В противном случае, если этот код был изменен на простой вход, он должен по крайней мере быть также изменен на значение = "# HTMLEditFormat (form.firstName) #" – Snipe656