javascript passe - valeur sélectionnée à partir de la fenêtre popup de la fenêtre parent d'entrée de la boîte de
Je suis la construction d'un formulaire de commande avec PHP et MySQL.
Le PHP il y a une zone de saisie où l'utilisateur saisit un code produit. Dans le cas où l'utilisateur ne connaît pas le code du produit, je veux cliquer sur une image ou sur le bouton à côté de l'entrée de la boîte, ce qui ouvre une fenêtre avec une liste de tous les codes de produit. ils peuvent ensuite cliquez sur le produit qu'ils veulent et le code du produit est passé de la popup à l'entrée de la boîte sur la table en ligne.
J'ai le code de ma page ci-dessous et l'image de la page, il crée de sorte que vous pouvez avoir une idée de ce que je suis désireux de réaliser.
de la page parent
<table border=0 id="hor-minimalist-a">
<tr>
<th valign=bottom>KVI</th>
<th valign=bottom>PACK CODE</th>
<th valign=bottom width=250>DESCRIPTION</th>
<th valign=bottom width=40>WHSE</th>
<th valign=bottom width=25>SU</th>
</tr>
<tr id="r1">
<td>
<input type=checkbox name=kvi1 id=kvi1 value=1>
</td>
<td>
<input size=10 type=number id=sku1 name=sku1 onchange="showUser(1, this.value)">
<input type="button" name="choice" onClick="window.open('sku.php','popuppage','width=400,toolbar=1,resizable=1,scrollbars=yes,height=400,top=100,left=100');" value="?">
</td>
<td>
<div align="left" id="txtHint1"> </div>
</td>
<td>
<div align="left" id="whse1"> </div>
</td>
<td>
<div align="left" id="su1"> </div>
</td>
</tr>
<tr id="r2">
<td>
<input type=checkbox name=kvi2 id=kvi2 value=2>
</td>
<td>
<input size=10 type=number id=sku2 name=sku2 onchange="showUser(2, this.value)"><img src=q.png>
</td>
<td>
<div align="left" id="txtHint2"> </div>
</td>
<td>
<div align="left" id="whse2"> </div>
</td>
<td valign=bottom>
<div align="left" id="su2"> </div>
</td>
</tr>
<tr id="r3">
<td>
<input type=checkbox name=kvi3 id=kvi3 value=3>
</td>
<td>
<input size=10 type=number id=sku3 name=sku3 onchange="showUser(3, this.value)"><img src=q.png>
</td>
<td>
<div align="left" id="txtHint3"> </div>
</td>
<td>
<div align="left" id="whse3"> </div>
</td>
<td>
<div align="left" id="su3"> </div>
</td>
</tr>
<tr id="r4">
<td>
<input type=checkbox name=kvi4 id=kvi4 value=4>
</td>
<td>
<input size=10 type=number id=sku4 name=sku4 onchange="showUser(4, this.value)"><img src=q.png>
</td>
<td>
<div align="left" id="txtHint4"> </div>
</td>
<td>
<div align="left" id="whse4"> </div>
</td>
<td>
<div align="left" id="su4"> </div>
</td>
</tr>
</table>
</form>
le popup code de la page et l'image est ci-dessous:
<?
$con = mysql_connect('localhost', 'dbuser', 'dbpass');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("databasename", $con);
$skusql="select packcode,category,description,grouping,packconfig,sellingunits,eottpoints from skudata order by category, packcode";
$resultsku=mysql_query($skusql);
?>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function sendValue (s){
var selvalue = s.value;
window.opener.document.getElementById('details').value = selvalue;
window.close();
}
// End -->
</script>
<form name="selectform">
<table border=0 width=1000 id="hor-minimalist-a">
<tr>
<th>Pack Code</th>
<th> </th>
<th>Category</th>
<th>Product Description</th>
<th>Grouping</th>
<th>Pack Config</th>
<th>SU</th>
<th>Points</th>
</tr>
<?php
while($rows=mysql_fetch_array($resultsku)){
?>
<tr>
<td><input name=details size=5 value="<?php echo $rows['packcode']; ?>"></td>
<td><input type=button value="Select" onClick="sendValue(this.form.details);"</td>
<td><?php echo $rows['category']; ?></td>
<td><center><?php echo $rows['description']; ?></td>
<td><center><?php echo $rows['grouping']; ?></td>
<td><center><?php echo $rows['packconfig']; ?></td>
<td><center><?php echo $rows['sellingunits']; ?></td>
<td><center><?php echo $rows['eottpoints']; ?></td>
</tr>
<?php
}
?>
</table>
Je suis en train de passer la valeur du produit code de la fenêtre de ligne, à la fenêtre parent d'entrée de la case "code pack'
J'ai essayé d'adapter un script, je suis venu à travers, mais ne suis pas en tirant dessus. Toute aide appréciée comme toujours!
Ce qui concerne,
Ryan
MISE À JOUR À LA QUESTION:
DE LA PAGE PARENT:
<html>
<head>
<title>Unilever Sales Portal</title>
<style>
@import url("style.css");
</style>
<script type="text/javascript">
function showUser(userNumber, str)
{
if (str=="")
{
document.getElementById("txtHint" + userNumber).innerHTML="";
return;
}
if (window.XMLHttpRequest)
{//code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//document.getElementById("txtHint" + userNumber).innerHTML=xmlhttp.responseText;
var responseText = xmlhttp.responseText;
var description = responseText;
var warehouse = "";
var sellingUnits = "";
if (responseText.indexOf("NOT A VALID") == -1)
{
description = responseText.substring(12, responseText.indexOf(",Warehouse:"));
warehouse = responseText.substring(responseText.indexOf(",Warehouse:")+11, responseText.indexOf(",SellingUnits:"));
sellingUnits = responseText.substring(responseText.indexOf(",SellingUnits:")+15);
}
document.getElementById("whse" + userNumber).innerHTML = warehouse;
document.getElementById("txtHint" + userNumber).innerHTML = description;
document.getElementById("su" + userNumber).innerHTML = sellingUnits;
}
}
xmlhttp.open("GET","getdata1.php?q="+str,true);
xmlhttp.send();
}
</script>
<script type="text/javascript">
function selectValue(id)
{
//open popup window and pass field id
window.open('sku.php?id=' + encodeURIComponent(id),'popuppage',
'width=400,toolbar=1,resizable=1,scrollbars=yes,height=400,top=100,left=100');
}
function updateValue(id, value)
{
//this gets called from the popup window and updates the field with a new value
document.getElementById(id).value = value;
}
</script>
</head>
SKU.PHP
<?
$con = mysql_connect('localhost', 'dbuser', 'dbpass');
if (!$con)
{
die('Could not connect to server: ' . mysql_error());
}
$db=mysql_select_db("dbname", $con);
if (!$db)
{
die('Could not connect to DB: ' . mysql_error());
}
$sql="select packcode,category,description,grouping,packconfig,sellingunits,eottpoints from skudata order by category, packcode";
$result=mysql_query($sql);
?>
<script type="text/javascript">
function sendValue(value)
{
var parentId = <?php echo json_encode($_GET['id']); ?>;
window.opener.updateValue(parentId, value);
window.close();
}
</script>
<form name="selectform">
<table border=0 width=1000 id="hor-minimalist-a">
<tr>
<th>Pack Code</th>
<th> </th>
<th>Category</th>
<th>Product Description</th>
<th>Grouping</th>
<th>Pack Config</th>
<th>SU</th>
<th>Points</th>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><input name=details size=5 value="<?php echo $rows['packcode']; ?>"></td>
<td><input type=button value="Select" onClick="sendValue(this.form.details);"</td>
<td><?php echo $rows['category']; ?></td>
<td><center><?php echo $rows['description']; ?></td>
<td><center><?php echo $rows['grouping']; ?></td>
<td><center><?php echo $rows['packconfig']; ?></td>
<td><center><?php echo $rows['sellingunits']; ?></td>
<td><center><?php echo $rows['eottpoints']; ?></td>
</tr>
<?php
}
?>
</table>
Voici les images pour montrer le fonctionnement.
de la page parent:
Popup Page:
De la Page Parent après popup
Merci encore pour l'aide.
En ce qui concerne,
Ryan
Vous devez vous connecter pour publier un commentaire.
Si vous voulez une fenêtre pop-up plutôt que d'un
<div />
, je suggère la démarche suivante.Dans votre page parent, vous appelez une petite méthode d'aide pour afficher la fenêtre pop-up:
Ajouter le suivant JS méthodes:
Votre
sku.php
reçoit le champ sélectionné via$_GET['id']
et les utilise pour construire le parent fonction de rappel:Pour chaque ligne de votre popup, modifier le code pour cela:
Suivant cette approche, la fenêtre pop-up n'a pas besoin de savoir comment faire pour mettre à jour les champs dans le formulaire parent.
onclick="sendValue('<?php echo $rows['packcode']; ?>')"
(fenêtre parent)
(fenêtre enfant)
http://www.codehappiness.com/post/access-parent-window-from-child-window-or-access-child-window-from-parent-window-using-javascript.aspx
Mon approche: utiliser un
div
au lieu d'une fenêtre pop-up.Le voir travailler dans le jsfiddle ici: http://jsfiddle.net/6RE7w/2/
Ou d'enregistrer le code ci-dessous comme test.html et essayer localement.
propre et simple.
À partir de votre code
Je ne suis pas sûr que votre
this.form.details
valide ou pas.SI elle est valide, avoir un coup d'oeil dans
window.opener.document.getElementById('details').value = selvalue;
Je ne peux pas constaté d'une entrée de l'id de contenir
details
je suis juste trouvé seulementid=sku1
(vous recommandons d'ajouter"
commeid="sku1"
).Et de votre pièce d'identité, il est coder en dur. Nous allons voir comment faire avec la dynamique lorsqu'un enfant a un rappel de mise à jour de certains de zone de texte sur le parent
Jetez un oeil à ici.
Première page.
Regarder dans
function choose
je suis envoyé un id de zone de texte de la fenêtre pop-up (n'oubliez pas d'ajouter des données factices au dernier des param URL comme&dummy=avoid#
)Popup Page
J'ai ajouter une fonction getUrlVars pour obtenir l'URL param que le parent a transmettre à l'enfant.
Bon, quand sélectionnez données dans la fenêtre contextuelle, pour ce cas, il sera appel
function goSelect
Dans cette fonction sera d'obtenir l'URL de param envoyé en arrière.
Et quand vous en avez besoin pour envoyer à la maison mère suffit d'utiliser fenêtre.ouvreur de et le nom de fonction comme fenêtre.ouvre-porte.callFromDialog
Par est
window.opener.callFromDialog(idFromCallPage,data);
Ou si vous souhaitez utiliser
window.opener.document.getElementById(idFromCallPage).value = data;
C'est ok aussi.utilisation:
opener.document.<id of document>.innerHTML = xmlhttp.responseText;