在表单中,我有一个启动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>. <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 })" />
<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>
我非常困难,所以非常感谢任何帮助。
如果任何人有更好的想法如何实现相同的功能,那么,如果你有分享的话,可以分享!
谢谢!
答案 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>