弹出窗口中的文本框值保持为空
Texbox value in popup remains null
我有一个 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>';
Buttan 调用 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);
}
截图:
每当我调用 GetAddData() 并在弹出框中插入文本并单击按钮时,值都保持为空。
为什么会这样?如何获取文本框值?
我正在使用 Pear PHP 和 OpenIT 的修改版本(以及旧的资产管理 CMS)。
我认为您的表单是通过此代码提交的
echo "<input type='submit' value='Add' OnClick='CreatePopup();'/>";
尝试将类型 'submit' 转换为 'button'
echo "<input type='button' value='Add' OnClick='CreatePopup();'/>";
如果我正确理解您要尝试做的事情...也许是这样?
更改此行(刚刚添加 window):
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
.
中查找输入
我有一个 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>';
Buttan 调用 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);
}
截图:
每当我调用 GetAddData() 并在弹出框中插入文本并单击按钮时,值都保持为空。
为什么会这样?如何获取文本框值?
我正在使用 Pear PHP 和 OpenIT 的修改版本(以及旧的资产管理 CMS)。
我认为您的表单是通过此代码提交的
echo "<input type='submit' value='Add' OnClick='CreatePopup();'/>";
尝试将类型 'submit' 转换为 'button'
echo "<input type='button' value='Add' OnClick='CreatePopup();'/>";
如果我正确理解您要尝试做的事情...也许是这样?
更改此行(刚刚添加 window):
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
.