2010-10-12 276 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。 「

相關問題