2015-04-29 11 views
6

Ho una pagina PHP che contiene questo blocco di codice:valore texbox nel popup rimane nulla

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 che chiama createPopup():

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

sto aprendo questo div come un popup utilizzando il seguente codice:

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(); 
} 

Codice che ottiene la casella di testo valori dalla comparsa:

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

} 

Screenshot:

POPUP

Ogni volta che io chiamo GetAddData() e inserire il testo nella casella a comparsa e fare clic sul pulsante, i valori rimangono nulli.

Perché sta succedendo? Come posso ottenere i valori della casella di testo?

Sto usando Pear PHP e una versione modificata di OpenIT (e vecchio CMS di gestione delle risorse).

risposta

1

Se ho capito quello che stai cercando di fare in modo corretto. .. Forse questo?

Modificare questa linea (finestra appena aggiunto):

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

E aggiungere un parametro finestra per la funzione GetAddData:

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); 
} 

Quando si chiama opener.GetAddData nel pop-up, il I metodi DOM stanno cercando nel documento opener e non nel popup. È necessario passare l'oggetto window del popup alla funzione, in modo che sappia che deve cercare gli input nella finestra di popup document.

+0

Funziona, ma sta ottenendo solo il primo valore (SoftwareName) e non tutto. – Brian

+1

non importa, usato, invece di +! :) Grazie – Brian

+0

OK, no problemo! –

0

penso che il modulo sottopone da questo codice

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

prova la conversione del tipo 'submit' a 'pulsante'

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

Avevo già provato, sempre lo stesso problema. – Brian

Problemi correlati