cfdiv работает в FF и Safari, но не отображается в IE - PullRequest
1 голос
/ 18 апреля 2010

Внутри формы у меня есть кнопка, которая запускает cfwindow, а затем представляет экран поиска, чтобы пользователь мог сделать выбор. После того, как выбор сделан, окно cfwindow закрывается, и выбранный контент отображается на главной странице, будучи привязанным к cfdiv. Это все прекрасно работает в FF, но cfdiv вообще не отображается в IE. В IE работает cfwindow, работает select, но тогда нет связанной страницы. Я попытался установить bindonload, и это не имело никакого значения (и мне нужно, чтобы оно было истинным, если есть контент, который извлекается через запрос при загрузке). Все, что я смог найти до сих пор в отношении этой проблемы, это установить для bindonload значение false и поместить cfdiv вне формы, но это невозможно в моем текущем проекте.

* 4/21 обновление Это работает, как ожидается в FF 3.6.3 и Safari 4, но не работает в нескольких версиях IE. В IE работает cfwindow, работает select, но когда окно закрывается и оно пытается загрузить страницу в div, оно просто вращается.

Это главная страница, test.cfm:

<cfajaximport tags="cfwindow, cfform, cfdiv, cftextarea, cfinput-datefield">        
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<cfset i = 1>
<cfform>
<table>
    <cfloop from="1" to="4" index="n">
        <tr>
            <td class="left" style="white-space:nowrap;">
                <cfoutput>#n#</cfoutput>.&nbsp;<cfinput type="button" value="Select #n#" name="x#n#Select#i#" onClick="ColdFusion.Window.create('x#n#Select#i#', 'Exercise Lookup', 'xSelect/xSelect2.cfm?xNameVar=x#n#S#i#&window=x#n#Select#i#&workout=workout#i#', {x:100,y:100,height:500,width:720,modal:true,closable:true,draggable:true,resizable:true,center:true,initshow:true,minheight:200,minwidth:200 })" />
                &nbsp;      
                <cfdiv bind="url:xSelect/x2.cfm" ID="x#n#S#i#" tagName="span" bindonload="false" />
                <cfinput type="hidden" ID="x#n#s#i#" name="x#n#s#i#" value="#n#" />
            </td>
        </tr>
    </cfloop>
</table>
</cfform>
</body>
</html>

Это окно cfwindow, xSelect2.cfm:

<cfparam name="form.xSelected" default="0">         
<cfoutput>
<a href="javascript:ColdFusion.navigate('xSelect/x2.cfm?xNameVar=#url.xNameVar#&xID=1&xName=1', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">1</a><br />
<a href="javascript:ColdFusion.navigate('xSelect/x2.cfm?xNameVar=#url.xNameVar#&xID=2&xName=2', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">2</a><br />
<a href="javascript:ColdFusion.navigate('xSelect/x2.cfm?xNameVar=#url.xNameVar#&xID=3&xName=3', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">3</a><br />
<a href="javascript:ColdFusion.navigate('xSelect/x2.cfm?xNameVar=#url.xNameVar#&xID=4&xName=4', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">4</a><br />
</cfoutput>

Эта страница привязана к cfdiv, x2.cfm:

<cfajaximport tags="cfwindow, cfform, cfdiv, cftextarea, cfinput-datefield">

<cfparam name="url.xName" default="">
<cfparam name="url.xNameVar" default="">
<cfparam name="url.xID" default=0>
<form>
<cfoutput>
<input type="text" id="xName" name="xName" value="#url.xName#" size="27" disabled="true" />
<input type="hidden" id="xNameVar" name="xNameVar" value="#url.xNameVar#" />
<input type="hidden" id="#url.xNameVar#xID" name="#url.xNameVar#xID" value="#url.xID#" />
</cfoutput>
</form>

Я сильно застрял, поэтому любая помощь очень ценится.

И конечно, если у кого-то есть лучшая идея о том, как достичь той же функциональности, пожалуйста, поделитесь!

Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2010

Ответ был очень, очень прост. Я получил подсказку из блога Матейса на whitehorsez.com (спасибо !!).

Очевидно, что IE не любит вложенные формы, поэтому все, что мне нужно было сделать, это удалить теги форм из x2.cfm выше. Это делает эту страницу неправильной, но при чтении в cfdiv она работает и отправляет все правильные значения в форму. Я закончил еще одно грубое решение, используя getElementById, который исключил лишнюю страницу, но проблема с ним заключалась в том, что вам пришлось сохранить, прежде чем вы смогли изменить значение, если было несколько вариантов. Вот новый и простой x2.cfm:

<cfoutput>
<input type="text" name="xName" value="#url.xName#" size="27" disabled="true" />
<input type="hidden" name="xNameVar" value="#url.xNameVar#" /> 
<input type="hidden" name="#url.xNameVar#xID" value="#url.xID#" />
</cfoutput> 
...