2015-03-17 15 views
1

У меня есть cfform с динамически заполненными текстовыми полями. Это все внутри входа в портал. Если база данных пуста, когда пользователь приходит к форме, я бы хотел, чтобы поля были «включены», чтобы они могли заполнить эту информацию и отправить форму. Однако, если они уже сделали это раньше и база данных заполнена, я бы хотел, чтобы поля были «отключены».Можно ли отключить текстовое поле cfinput type = с помощью условного оператора cfscript if?

По сути, я хотел:

<cfscript> 
if (isDefined("query.column")) 
{ 
disable the cfinput fields 
} 

возможно ли это? Если нет, какие-либо идеи о том, как это сделать?

+2

Почему ограничение cfscript? Очевидно, вы используете теги (cfinput), поэтому просто используйте теги и делайте различие при создании формы. –

+0

Я не уверен, что именно вы имеете в виду. Я открыт для любых идей для этого. Это форма, которую они изначально будут заполнять, затем нажмите «Сохранить» и в будущем вы сможете редактировать. Я бы хотел, чтобы поля были включены, когда они пустые, и отключены, когда они заполнены из db, а также кнопка редактирования, чтобы включить, если что-либо нуждается в обновлении. – jzamora1229

+2

Разве столбец не будет, если он заселен или нет? Разве вы не должны проверять, имеет ли значение столбца значение? –

ответ

2

Вот что я имел в виду из моего комментария. Я не верю, что есть какая-то причина делать то, что вы хотите, в тегах cfscript. Вы уже используете синтаксис тега для своей формы, поэтому просто проверяйте свое состояние (условия) при создании формы.

Например, теперь у вас есть что-то вроде этого:

<html> 
    <head> 
     <!-- some code here --> 
    </head> 
    <body> 
     <!-- some code here --> 

     <cfform ... > 
      <cfinput type="text" ... > 
     </cfform> 

     <!-- some code here --> 
    </body> 
</html> 

То, что я предлагаю, чтобы сделать что-то вроде этого:

<html> 
    <head> 
     <!-- some code here --> 
    </head> 
    <body> 
     <!-- some code here --> 

     <cfform ... > 
      <cfif isDefined("query.column")> 
       <cfinput type="text" disabled="disabled" ... > 
      <cfelse> 
       <cfinput type="text" enabled="enabled" ... > 
      </cfif> 
     </cfform> 

     <!-- some code here --> 
    </body> 
</html> 

Используйте подобные условия в тегах, как вы строите форму для любых других полей или кнопок и т. д.

+0

Это имеет смысл! Однако, когда я это делаю, по какой-либо причине, независимо от того, определено это или нет, форма только хочет отобразить первый тег cfinput. Таким образом, в любом случае поле отключено, пустое или пустое. Есть идеи? :/ – jzamora1229

+0

Да, конечно, вам нужно проверить, действительно ли значение находится в столбце базы данных. Я просто шел по тому, что вы делили в своем первоначальном вопросе. Рад, что он работает на вас. –

+0

Если используется исходный 'input', то он отключается с помощью литерального' 'disabled '' inline, без присвоения или чего-либо: ''. Это не работает с 'cfinput'. Я экспериментировал с назначением/отключением true/false, а с надписью выше отключено = отключено "' и 'enabled =" включено ". Являются ли эти обозначения правильными, это кажется странным? – samosaris

1

Я понял, что проблема. Мне нужно было проверить ценность. Я переписал cfif как

<cfif #query.column# eq "NULL" OR #query.column# eq ""> 
    <cfinput type="text"> 
<cfelse> 
    <cfinput type="text" value="#query.column#" disabled="disabled"> 
</cfif> 

Спасибо, ребята, за вашу помощь!

+2

Если вы не используете какие-либо дополнительные функции, лучше использовать стандартный html ' вместо этого. Обертки CF немного неуклюжи и добавляют много ненужного беспорядка в источник html. Также 1) значения «NULL» в наборе результатов рассматриваются как пустая строка в CF. Если вы не проверяете буквальные символы «NULL», вам нужна последняя проверка. 2) Нет необходимости в знаках # в CFIF. – Leigh