2010-10-12 74 views
1

我有父页面和子弹出窗口页面(empW.cfm)。子页面具有搜索字段,用于搜索并显示结果。我必须从三个子页面中选择一个搜索结果并将其填充到父页面。将错误的值从子页面传递到父页面。

我无法将正确的选定值从Child传递给Parent页面。

父页面: -

<script type="text/javascript" > 

    function doSubmit() { 
     var Emp = document.getElementById("emp"); 
     var getName = document.getElementById("getName"); 
     Emp.value = getName.value; 
       } 
      </script> 
</head> 
<body> 
<cfajaximport tags="cfform,cfwindow" scriptsrc="test.js"> 
<cfform action="Action.cfm" name="formE" id="formE" preserveData="true" enctype="multipart/form-data" method="post" onsubmit="return validate(document.formE);" > 
<table > 
    <tbody>  
      <tr><td > Name*: </td><td><cfinput name="Name" id="Name" type="text" ></td></tr>   

      <tr><td > EMP:</td> 
<td><input name="searchName" id="emp" onclick="ColdFusion.Window.create('w1','Title','empW.cfm')"></td> 

    </tr> 
    </tbody> 
</table> 
</cfform> 

儿童/窗口页面: -

<cfform name="formI" id="formI" preserveData="false" method="post"> 
<table> 
<tr>SERACH:- <input name="getName" id="getName" type="text" value="Find emp name" > 
<cfif isdefined('form.getName')> 
<tr> 
<cfloop startrow="1" endrow="qry" query="qry"> 
    <cfoutput>Selected = #qry.getName# 
<input name="Add" id="getNm" type="button" value="submit" onclick="document.getElementById('emp').value=document.getElementById('getName').value;"> 
</cfoutput> 
</ cfloop> 
tr> 

</cfif> 
</table> 
</cfform> 

例子: - 有儿童第10个的搜索结果,而我选择了8号的结果,仍然是父页面仅由第一个结果填充。我每次选择搜索结果时都会选择这种情况。当我点击子项上的提交按钮时,只有搜索结果的第一个值被传递。

如何将确切的选定搜索结果从子页面传递到父页面。

回答

2

两件事。你应该从你的javascript标签中删除src。并将其移至第二组脚本标记。您的“getName”字段需要一个唯一的值。现在,您将最终得到具有相同ID的多个getName字段。另外,在附注中,如果您正在使用它,则不需要导入cfform。

+0

”现在你最终会得到多个具有相同ID的getName字段。“ – Fransis 2010-10-12 19:24:23

+0

是的,这就是我现在正在得到的杰森,因为我只想传递选定的值。 – Fransis 2010-10-12 19:25:09

+0

我已更正js /“src”并为getName具有唯一值。 stil – Fransis 2010-10-12 19:27:59

2

我想通了你的问题,让我解释一下你的问题:

才明白我的简单代码:

<html> 
    <head> 
     <script> 
      function transform(){ 
       var x_elements = document.getElementsByName('x'); 
       var y_elements = document.getElementsByName('y'); 
       var i=0; 
       for (i=0; i<x_elements.length; i++) 
       { 
        y_elements[i].value = x_elements[i].value; 
       } 
      } 
     </script> 
    </head> 
<body> 
    <select name="x" id="x"> 
     <option value="1">one</option> 
     <option value="2">two</option> 
     <option value="3">three</option> 
    </select> 
    <select name="x" id="x"> 
     <option value="5">five</option> 
     <option value="6">six</option> 
     <option value="7">seven</option> 
    </select> 
    <br/> 
    <select name="y" id="y"> 
     <option value="1">one</option> 
     <option value="2">two</option> 
     <option value="3">three</option> 
    </select> 
    <select name="y" id="y"> 
     <option value="5">five</option> 
     <option value="6">six</option> 
     <option value="7">seven</option> 
    </select> 
    <br/> 
    <input type="button" value="Check" onclick="javascript:alert(document.getElementById('x').value);" /> 
    <br/> 
    <input type="button" value="Transform" onclick="javascript:transform();" /> 
</body> 
</html> 

我故意保持相同的名称和ID两个select标签。 按ID访问元素时,只能访问具有相同ID的第一个元素(例如Check按钮)。 所以你可以使用documents.getElementsByName()

最后,我仍然建议尽量避免这种情况,并保持id每个元素都是唯一的。你可以使用循环和计数器生成唯一的ID。例如name1,name2等。

对于快速简单的javascripting,请使用jQuery。 “