Передача неправильных значений с дочерней страницы на родительскую. - PullRequest
1 голос
/ 12 октября 2010

У меня есть родительская страница и страница всплывающего окна дочернего элемента (empW.cfm). Дочерняя страница имеет поле поиска, которое ищет и отображает результаты. Мне нужно выбрать один результат поиска на дочерней странице и заполнить его на родительской странице.

Я не могу передать правильное выбранное значение со страницы Дочерний элемент на родительский.

Родительская страница: -

    <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 результатов поиска, и я выбираю восьмой результат, но родительская страница заполняется только первым результатом. Это тот случай, когда я выбираю каждый раз, когда выбираю результат поиска. Когда я нажимаю кнопку «Отправить» на дочернем объекте, передается только первое значение результата поиска.

Как передать точный выбранный результат поиска с дочерней на родительскую страницу.

Ответы [ 2 ]

2 голосов
/ 13 октября 2010

Я понял вашу проблему. Позвольте мне объяснить вашу проблему:

Просто поймите мой простой код:

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

Я намеренно сохранил одно и то же имя и идентификатор для двух select тег.При доступе к элементу по идентификатору у вас будет доступ только к первому элементу с таким же идентификатором (например, кнопка «Проверить»).Таким образом, вы можете использовать documents.getElementsByName().

Наконец, я бы все же предложил попытаться избежать этой ситуации и сохранить id уникальным для каждого элемента.Вы можете использовать цикл и счетчик генерировать уникальный идентификатор.например, имя1, имя2 и т. д.

Для быстрого и удобного javascripting, используйте jQuery .

2 голосов
/ 12 октября 2010

Две вещи. Вы должны удалить src из вашего тега javascript. И перенести это на второй набор тегов скрипта. Ваши поля "getName" должны иметь уникальное значение. Прямо сейчас у вас будет несколько полей getName с одинаковым идентификатором. Кроме того, отметим, что вам не нужно импортировать cfform, если вы его используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...