Проблема холодного синтеза с переплетом формы
У меня есть следующее:
<cfquery name="getArt" datasource="cfartgallery">
select * from art where artid < 10
</cfquery>
<cfform name="myform2" width="620" height="750" timeout="100" preservedata="yes" wmode="transparent">
<cfoutput query="getArt">
<cfinput id="pickers#currentRow#" name="pickmany" type="checkbox" value="#artname#" >
<label for="pickers#currentRow#">#artname#</label>
<br/>
</cfoutput>
<cfinput type="text" name="pickmany_selected" bind="{pickmany}" size="50">
</cfform>
всякий раз, когда вы устанавливаете флажок, он добавляется в поле "pickmany_selected".
Теперь я пытаюсь сделать то же самое поведение с флэш-формы.
<cfform name="myform" width="620" height="750" format="Flash" timeout="100" preservedata="yes" wmode="transparent">
<cfoutput query="getArt">
<cfinput id="pickers#currentRow#" name="pickmany" type="checkbox" value="#artname#" label="#artname#"><br/>
</cfoutput>
</cfform>
это ломается. это работает только если я поставлю name="pickmany#currentRow#":
<cfform name="myform" width="620" height="750" format="Flash" timeout="100" preservedata="yes" wmode="transparent">
<cfoutput query="getArt">
<cfinput id="pickers#currentRow#" name="pickmany#currentRow#" type="checkbox" value="#artname#" label="#artname#"><br/>
</cfoutput>
<cfinput type="text" name="pickmany_selected" bind="{pickmany1}" size="50">
</cfform>
Что мне нужно сделать для флэш-формы, чтобы pickmany_selected связывался правильно? в последнем примере я не могу привязаться к общему имени. ненавижу эти флеш формы.
1 ответ
Решение
это работает только если я поставлю name="pickmany#currentRow#":
Да, флэш-формы требуют, чтобы все имена полей были уникальными. Из-за этого я подозреваю, что ваша цель невозможна с привязкой. Тем не менее, вы можете свернуть свою собственную функцию и вызвать ее по клику. Мои флеш-навыки довольно ржавые. Но что-то вроде этого:
<cfform name="myform" width="620" height="750" format="Flash" timeout="100" preservedata="yes" wmode="transparent">
<cfformitem type="script">
function updateSelectedArt():Void{
var elem;
var values = [];
var total = parseInt(myform.pickmany_total);
for (var i = 1; i <= total; i++) {
elem = _root["pickmany"+ i];
if (elem.selected) {
values.push(elem.label);
}
}
// use whatever delmiter makes sense
_root["pickmany_selected"].text = values.join(",");
}
</cfformitem>
<cfoutput query="getArt">
<cfinput name="pickmany#currentRow#" type="checkbox" value="#artname#" onClick="updateSelectedArt()" label="#artname#"><br/>
</cfoutput>
<cfinput type="hidden" name="pickmany_total" value="#getArt.recordCount#">
<cfinput type="text" name="pickmany_selected" value="" size="50">
</cfform>