2010-10-12 9 views
1

J'ai une page parent et une page de fenêtre contextuelle enfant (empW.cfm). La page enfant a un champ de recherche qui recherche et affiche les résultats. Je dois sélectionner un résultat de recherche de la page enfant et le remplir sur la page parent.Transmission de valeurs erronées de la page enfant à la page parent.

Je ne parviens pas à transmettre la bonne valeur sélectionnée de la page Enfant à parent.

page 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> 

enfant/page Fenêtre: -

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

Exemple: - il y a 10 résultats de recherche sur la page d'enfant, et je sélectionner le 8 résultat, toujours le La page parent est remplie uniquement par le premier résultat. C'est le cas lorsque je sélectionne chaque fois que je sélectionne un résultat de recherche. Lorsque je clique sur le bouton Soumettre de l'enfant, seule la première valeur du résultat de la recherche est transmise.

Comment passer le résultat de recherche sélectionné, de la page Enfant à la page parent.

Répondre

2

Deux choses. Vous devez supprimer le fichier src de votre balise javascript. Et déplacez cela vers un deuxième ensemble de balises de script. Vos champs "getName" ont besoin d'une valeur unique. En ce moment, vous allez vous retrouver avec plusieurs champs getName avec le même ID. De plus, sur une note de côté, vous n'avez pas besoin d'importer cfform si vous l'utilisez.

+0

"En ce moment, vous allez vous retrouver avec plusieurs champs getName avec le même ID." – Fransis

+0

oui c'est ce que je reçois en ce moment Jason, où comme je veux passer seulement la valeur sélectionnée. – Fransis

+0

J'ai corrigé js/"src" et ai une valeur unique pour getName. stil – Fransis

2

j'ai compris votre problème, laissez-moi vous expliquer votre problème:

Vous devez comprendre mon code simple:

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

J'ai volontairement gardé le même nom et id à deux select balise. Lors de l'accès à l'élément par ID, vous aurez accès uniquement au premier élément avec le même ID (par exemple, bouton Vérifier). Vous pouvez donc utiliser documents.getElementsByName().

Enfin, je suggère toujours que tenter d'éviter cette situation et garder id unique pour chaque élément. Vous pouvez utiliser loop et counter pour générer un identifiant unique. par exemple. nom1, nom2, etc.

Pour un javascript rapide et facile, utilisez jQuery.

Questions connexes