2013-08-03 2 views
0

Вот мой cfselect:ColdFusion: cfselect и инвалидов атрибут с переменной

<cfselect 
    name="UrgencyId" 
    query="GetUrgencies" 
    value="id" 
    display="Urgency" 
    selected="#issue.UrgencyId#"> 
</cfselect> 

Он работает хорошо, за исключением я не знаю, как сделать это отключить в соответствии с значением переменной.

Если я делаю так, что кажется отключен:

<cfselect 
    name="UrgencyId" 
    query="GetUrgencies" 
    value="id" 
    display="Urgency" 
    selected="#issue.UrgencyId#" 
    disabled="disabled"> 
</cfselect> 

Но когда я пытаюсь добавить Cfif, возникает ошибка (хорошо, я вижу, что макет не так):

<cfselect 
    name="UrgencyId" 
    query="GetUrgencies" 
    value="id" 
    display="Urgency" 
    selected="#issue.UrgencyId#" 
    <cfif true>disabled="disabled"</cfif>> 
</cfselect> 

Ok , я пытаюсь использовать переменную:

<cfset dsbl="disabled='disabled'"> 
<cfselect 
    name="UrgencyId" 
    query="GetUrgencies" 
    value="id" 
    display="Urgency" 
    selected="#issue.UrgencyId#" 
    #dsbl#> 
</cfselect> 

и получить ошибку:

Invalid CFML construct found on line 47 at column 139. 
ColdFusion was looking at the following text: 
# 

Я читал, что cfselect имеет атрибут enabled, который действует против атрибута HTML disabled. Поэтому я пробовал это:

<cfselect enabled="no"> 
<cfselect enabled="false"> 
<cfselect enabled=no> 
<cfselect enabled=false> 

все это не отключило мое выпадающее меню.

+3

Павла - вы не должны использовать 'cfform' или любой из соответствующих тегов или любой клиентской части (UI, AJAX и т.д.) в ColdFusion. Есть ограничения для каждого, что разработчики обычно попадают довольно быстро. Вместо этого найдите время, чтобы узнать, как этот материал используется с использованием обычных HTML-форм и javaScript, таких как jQuery. Мало того, что вы не будете ограничены 'cfform', но вы будете изучать навыки, которые вы можете легко перевести на другие языки. –

ответ

3

Я бы рекомендовал не использовать cfform, потому что он имеет тенденцию наносить гораздо больше вреда, чем пользы, при этом вы можете использовать attributeCollection, чтобы получить эту работу.

<cfset stSelect = { 
    name = 'UrgencyId', 
    query = 'GetUrgencies', 
    value = 'id', 
    display = 'Urgency' 
} /> 
<cfif boxShouldBeDisabled> 
    <cfset stSelect.disabled = 'disabled' /> 
</cfif> 

<cfselect attributeCollection="#stSelect#"> 
</cfselect> 

Вы не укажете свой ColdFusion версии, но приведенный выше код должен работать на CF8 или больше, и был протестирован на CF10.

Не используйте cfform ваш код будет выглядеть. Это определенно не как чистый вид, но она позволяет не использовать cfform

<select name="UrgencyId"> 
    <cfloop query="GetUrgencies"> 
    <option value="#GetUrgencies.id#"<cfif issue.UrgencyID EQ GetUrgencies.id> selected="selected"</cfif><cfif shouldbeDisabled> disabled="disabled"</cfif>>#GetUrgencies.Urgency#</option> 
    </cfloop> 
</select> 
+0

Неиспользование тега 'cfform' имеет недостаток: вам нужно будет написать все проверки вручную. – Paul

+3

1. cfform не выполняет проверку на стороне сервера, поэтому вам все равно нужно. –

+5

2. ** Все ** cfform можно сделать _better_ [другим программным обеспечением] (http://carehart.org/cf411/#form). –

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

  • Нет связанных вопросов^_^