J'ai cette fonction pour copier des valeurs d'une fenêtre à l'autre qui fonctionne dans un sens, mais pas dans un autre ...

Script de travail:

$(document).ready(function(e) {
    $('#clickit').live({
        click: function() { 
            window.opener.document.forms['orderForm']['service'].value = document.forms['GroundRates']['service'].value;
            window.opener.document.forms['orderForm']['rate'].value = document.forms['GroundRates']['rate'].value;
            self.close();
            return false;
        }
    });
});

Maintenant, sur cet autre script, qu'est-ce que j'ai fait de mal? Je tire mes cheveux ici.

Ca ne fonctionne pas:

$(document).ready(function(e) {
    $('#clickit').live({
        click: function() { 
            var thisservice = document.forms['GroundRates']['service'].value;
            var thisrate = document.forms['GroundRates']['rate'].value;
            var thatservice = window.opener.document.forms['orderForm']['service'].value;
            var thatrate = window.opener.document.forms['orderForm']['rate'].value;
            $(thatrate) = $(thisrate);
            $(thatservice) = $(thisservice);
            self.close();
            return false;
        }
    });
});

J'ai aussi essayé ..

$(thatrate).val() = $(thisrate).val();
$(thatservice).val() = $(thisservice).val();

Et..

thatrate = thisrate;
thatservice = thisservice;

Mais cela fonctionne:

var service = document.forms['GroundRates']['service'].value;
var rate = document.forms['GroundRates']['rate'].value;
window.opener.document.forms['orderForm']['service'].value = service;
window.opener.document.forms['orderForm']['rate'].value = rate;

Suis-je pas attribuer la var correctement pour le window.opener?

0
Monty 5 déc. 2011 à 22:28

4 réponses

Meilleure réponse
var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];

thatrate.value = thatservice.value;
thatservice.value = thisservice.value;

Ou si vous souhaitez encapsuler les objets DOM avec un objet jQuery.

var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];

$(thatrate).val( $(thatservice).val() );
$(thatservice).val( $(thisservice).val() );
1
aziz punjani 5 déc. 2011 à 18:40

Essayer:

var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];
thatrate.val(thisrate.val());
thatservice.val(thisservice.val());
1
DrXCheng 5 déc. 2011 à 18:33

Votre console vous dira: ReferenceError: Invalid left-hand side in assignment

$(thatrate) = $(thisrate);
$(thatservice) = $(thisservice);

Vous devez le faire comme ceci:

var thisservice = document.forms['GroundRates']['service'];
var thisrate = document.forms['GroundRates']['rate'];
var thatservice = window.opener.document.forms['orderForm']['service'];
var thatrate = window.opener.document.forms['orderForm']['rate'];

thatrate.value = thisrate.value
thatservice.value = thisservice.value;
1
RightSaidFred 5 déc. 2011 à 18:39

Vous utilisez abusivement .val ()

$(thatrate).val($(thisrate).val());
$(thatservice).val($(thisservice).val());

La nouvelle valeur est placée entre parenthèses.

2
Toast 5 déc. 2011 à 18:31
8390027