javascript - 弹出窗口中的文本框值保持为空

标签 javascript php jquery popup

我有一个包含这段代码的 php 页面:

echo '<div id="popup" style="display:none">';
echo '<form id="AddForm" name="AddForm" method="get">';
echo '<table><tr>';
echo '<td>Software Name: </td><td><input type="text" id="SoftwareName"/></td></tr>';
echo '<tr><td>Software Type:</td><td><input type="text" id="SoftwareType"/></td></tr>';
echo '<tr><td>License Method:</td><td><input type="text" id="LicenseMethod"/></td></tr>';
echo '<tr><td><input type="button" value="Add" OnClick="opener.GetAddData();"></td><td></td>';
echo '</tr></table>';
echo '</form>';
echo '</div>';

调用 CreatePopup() 的按钮:

echo "<input type='submit' value='Add' OnClick='CreatePopup();'/>";

我使用以下代码将此 div 作为弹出窗口打开:

function CreatePopup()
{   
       var w = null;
        w = window.open('index.php?List=SoftwareLicenseAllocations', 'test', 'height=125,width=300');
        w.document.write( $("#popup").html());
        w.document.close();
}

从弹出窗口获取文本框值的代码:

function GetAddData()
{   
    var SoftwareName = document.getElementById('SoftwareName').value;//.getElementById('SoftwareName').value;
    var SoftwareType = document.getElementById('SoftwareType').value;
    var LicenseMethod =document.getElementById('LicenseMethod').value;        

    alert(SoftwareName, SoftwareType, LicenseMethod);       

    AddNew(SoftwareName,SoftwareType,LicenseMethod);

}

截图:

POPUP

每当我调用 GetAddData() 并在弹出框中插入文本并单击按钮时,值都保持为空。

为什么会这样?如何获取文本框值?

我正在使用 Pear PHP 和修改版的 OpenIT(以及旧的 Assets 管理 CMS)。

最佳答案

如果我正确理解您要尝试做的事情...也许是这样?

更改此行(刚刚添加的窗口):

echo '<tr><td><input type="button" value="Add" OnClick="opener.GetAddData(window);"></td><td></td>';

并在GetAddData函数中添加一个window参数:

function GetAddData(window)
{   
    var popupDoc = window.document;
    var SoftwareName = popupDoc.getElementById('SoftwareName').value;//.getElementById('SoftwareName').value;
    var SoftwareType = popupDoc.getElementById('SoftwareType').value;
    var LicenseMethod = popupDoc.getElementById('LicenseMethod').value;        

    alert(SoftwareName, SoftwareType, LicenseMethod);       

    AddNew(SoftwareName,SoftwareType,LicenseMethod);
}

当您在弹出窗口中调用 opener.GetAddData 时,DOM 方法会在 opener 文档中搜索,而不是在弹出窗口中搜索。您需要将弹出窗口的 window 对象传递给该函数,以便它知道它应该在弹出窗口的 document 中查找输入。

关于javascript - 弹出窗口中的文本框值保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936462/

相关文章:

javascript - 为什么人们使用 i = i + 1 而不是 i++?

javascript - 搜索时禁用输入字段并将焦点设置为完成

javascript - AngularJS - 传递给 Controller ​​的状态名称不起作用

php - 链接不适用于 jquery

php - 从选择 laravel 中删除

在另一个 HTML 页面上显示 HTML 值的 JavaScript

javascript - 要在单个页面中执行两个动画,一个在 Canvas 中一个在另一个上

javascript - 在 javascript 中获取多个文件的文件大小

php - 根据值设置复选框状态

javascript - requirejs - 从全局空间获取问题