cfdiv在FF和Safari中工作,但不会出现在IE中

时间:2010-04-17 21:25:33

标签: coldfusion

在表单中,我有一个启动cfwindow的按钮,然后显示一个搜索屏幕供用户进行选择。选择完成后,cfwindow将关闭,所选内容将通过绑定到cfdiv显示在主页面中。这一切在FF中工作正常,但cfdiv在IE中根本不显示。在IE中,cfwindow工作,选择工作,但然后没有绑定页面。 我已经尝试过设置bindonload并没有任何区别(如果有内容在加载时通​​过查询引入,我需要它是真的)。到目前为止,我所能找到的关于这个问题的是将bindonload设置为false并将cfdiv放在表单之外,但这在我当前的设计中是不可能的。

* 4/21更新 这在FF 3.6.3和Safari 4中按预期工作,但在多个IE版本中不起作用。在IE中,cfwindow工作,选择工作,但当窗口关闭,它试图将页面加载到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 :(得分:0)

答案非常非常简单。我从whitehorsez.com上的Mathijs'Weblog获得了线索(谢谢!!)。

显然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>