Toon posts:

[js] rij nummer meegeven aan popup

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een script maken waarbij er op een knop naast een textveld gedrukt kan worden, aan deze knop hang ik een onclick event waarmee de functie popup_tree() aangeroepen wordt met de nodige parameters. Het probleem is nu dat ik meerdere textvelden heb en dus aan de functie popup_tree() de rij nummer (van table) mee wil geven om de popup de data weg te laten schrijven naar het juiste textveld in de main pagina.
functie add() en de knop add bevinden zich in de popup pagina en worden gebruikt om de data naar de main pagina weg te schrijven.

Ik weet alleen niet hoe ik het rijnummer wat aan popup_tree() functie meegegeven wordt aan de popup mee kan geven, zodat de add() functie weet naar welke textveld hij moet wegschrijven.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// bevindt zich in de main page
function popup_tree(page, width, height) {
        // pop must be displayed in the center of the screen
        var left = (screen.availWidth/2) - (width/2);
        var top = ((screen.availHeight/2) - (height/2)) / 2;

        window.open(page,'pop','width='+width+',height='+height+',status=yes,toolbar=no,menubar=no,location=no,left='+left+', top='+top);
}


// bevinden zich in de popup
function add() {
        opener.document.macro_conditions_form.veldnaam.value = tree_target_frame.device_status_form.id + " == " + tree_target_frame.device_status_form.device_status.value;
        self.close();
}

<input type="button" class="button" value="add" name="add_button" onclick="add()" style="font-size: 8pt; width: 35">

[ Voor 14% gewijzigd door Verwijderd op 13-07-2005 13:22 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

code:
1
page + '?rijnummer=' + rijnummer;

en in je popup het rijnummer weer uit je querystring (location.search) halen met wat string-manipulatie ;)

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op woensdag 13 juli 2005 @ 13:26:
code:
1
page + '?rijnummer=' + rijnummer;

en in je popup het rijnummer weer uit je querystring (location.search) halen met wat string-manipulatie ;)
top!
dank je

[ Voor 19% gewijzigd door Verwijderd op 13-07-2005 13:30 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarom niet zo:
JavaScript:
1
2
3
4
function pope(){
  popUpWin = open('index.htm', 'popUpWin');
  popUpWin.BtM909 = 'Randy';
}


Waarbij BtM909 uiteraard een variabele is in je popup :)

[ Voor 32% gewijzigd door BtM909 op 13-07-2005 13:32 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

BtM909 schreef op woensdag 13 juli 2005 @ 13:31:
Waarom niet zo:
JavaScript:
1
2
3
4
function pope(){
  popUpWin = open('index.htm', 'popUpWin');
  popUpWin.BtM909 = 'Randy';
}


Waarbij BtM909 uiteraard een variabele is in je popup :)
Leuk bedacht :) Werkt ook goed in Firefox, alleen niet in IE - waarschijnlijk door een race-condition...

Intentionally left blank


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

crisp schreef op woensdag 13 juli 2005 @ 13:45:
[...]

Leuk bedacht :) Werkt ook goed in Firefox, alleen niet in IE - waarschijnlijk door een race-condition...
Ehm, juist getest in IE weet je nog: IE Rocks \o/

Moet je overigens wel die variabele hebben gedeclareerd / geset in je popup.

[ Voor 13% gewijzigd door BtM909 op 13-07-2005 13:47 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

crisp schreef op woensdag 13 juli 2005 @ 13:45:
[...]

Leuk bedacht :) Werkt ook goed in Firefox, alleen niet in IE - waarschijnlijk door een race-condition...
Waarom een race condition? Afaik, wordt de popup niet asynchroon geopend met andere scripts, maw de name wordt eerste gezet door de popup en daarna komt een ander aan de beurt :)

[ Voor 12% gewijzigd door Verwijderd op 13-07-2005 13:51 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

page1.html:
HTML:
1
2
3
4
5
6
<script type="text/javascript">

var win = window.open('page2.html');
win.foo = 'nieuwe waarde';

</script>

page2.html:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">

var foo = 'originele waarde';

function load()
{
    alert(foo);
}

window.onload = load;

</script>

en dan gebruik ik nog wel onload; IE (6, winXP) geeft echter 'originele waarde' als alert...

edit: Firefox geeft ook 'originele waarde' tenzij ik foo niet declareer in page2.html; IE geeft dan 'undefined'

edit2: als ik test via het filesystem werkt het ook in Firefox niet.

edit3: als ik de functie load met een timeout aanroep gaat het wel goed; hence een race-condition.

[ Voor 27% gewijzigd door crisp op 13-07-2005 14:13 ]

Intentionally left blank


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik liep niet tegen de race-condition aan, vanwege dit:

index1.htm:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<script type="text/javascript">

function pope(){
  popUpWin = window.open('index2.htm', 'popUpWin');
  popUpWin.BtM909 = 'Marit';
}

</script>
</head>

<body>
<input type="button" value="set Value" onclick="pope()">
</body>
</html>


index2.htm:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<script type="text/javascript">
var BtM909 = 'Randy';
</script>
</head>

<body>
<input type="button" value="test" onclick="alert(BtM909);">

</body>
</html>

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Wat ook grappig is, is dat je dit goed kunt simuleren met SP2 want tot het moment dat je het script toegang geeft als je vanaf je desktop draait geeft die netjes "Randy" en zodra er eenmaal toegang is geeft die "Marit" :)

Dan moet je inderdaad met settimeout gaan werken en met readystate controles. Helaas pindakaas.

[ Voor 23% gewijzigd door Verwijderd op 13-07-2005 14:30 ]


  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 05-05 15:54

Salandur

Software Engineer

<knip> verkeerde toets.....</knip>

[ Voor 99% gewijzigd door Salandur op 13-07-2005 15:00 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 05-05 15:54

Salandur

Software Engineer

je kan het natuurlijk ook andersom proberen:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<script type="text/javascript">
  var BtM909 = 'Marit';

function pope(){
  BtM909 = 'Salandur'
  popUpWin = window.open('index2.htm', 'popUpWin');
}

</script>
</head>

<body>
<input type="button" value="set Value" onclick="pope()">
</body>
</html>


index2.htm:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<script type="text/javascript">
  function give_alert() {
    alert(window.opener().BtM909);
</script>
</head>

<body>
<input type="button" value="test" onclick="give_alert();">

</body>
</html>

(niet getest, geen tijd voor)

[ Voor 26% gewijzigd door Salandur op 13-07-2005 15:00 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Verwijderd

Topicstarter
BtM909 schreef op woensdag 13 juli 2005 @ 13:31:
Waarom niet zo:
JavaScript:
1
2
3
4
function pope(){
  popUpWin = open('index.htm', 'popUpWin');
  popUpWin.BtM909 = 'Randy';
}


Waarbij BtM909 uiteraard een variabele is in je popup :)
dit is inderdaad een hele handige manier.


nog ff iets anders, ik heb een form met een tabel er in, maar is het mogelijk om de value van een textveld wat zich in een bepaalde cel bevindt te veranderen, zonder dat je cel.innerHTML hoeft te gebruiken?

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 05-05 15:54

Salandur

Software Engineer

Verwijderd schreef op woensdag 13 juli 2005 @ 15:36:
[...]


dit is inderdaad een hele handige manier.


nog ff iets anders, ik heb een form met een tabel er in, maar is het mogelijk om de value van een textveld wat zich in een bepaalde cel bevindt te veranderen, zonder dat je cel.innerHTML hoeft te gebruiken?
form-element-> kan je het textveld opvragen -> text opvragen + wijzigen

Assumptions are the mother of all fuck ups | iRacing Profiel


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 13 juli 2005 @ 15:36:
[...]


dit is inderdaad een hele handige manier.
maar niet in alle gevallen dus even bruikbaar ;)
nog ff iets anders, ik heb een form met een tabel er in, maar is het mogelijk om de value van een textveld wat zich in een bepaalde cel bevindt te veranderen, zonder dat je cel.innerHTML hoeft te gebruiken?
Ja; als je een referentie hebt naar de juiste cell kan je met de DOM methoden een element binnen die cell aanspreken, bijvoorbeeld dmv cellReference.firstChild (aangenomen dat er zich geen whitespace tussen het td-element en het input-element bevind *)

* zie ook http://www.mozilla.org/docs/dom/technote/whitespace/

Intentionally left blank


Verwijderd

Topicstarter
Salandur schreef op woensdag 13 juli 2005 @ 15:56:
[...]

form-element-> kan je het textveld opvragen -> text opvragen + wijzigen
code:
1
opener.document.form_name.field_name.value = new_value;


de field_name heb ik in een variabele, maar ik heb allerlei manier geprobeerd("" en +-jes, etc.) om JS eerste de waarde van de variabele uit te laten rekenen en die dan in bovenstaande string te plakken, maar op een of andere manier wil dit maar niet werken.

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 05-05 15:54

Salandur

Software Engineer

<delete>

[ Voor 200% gewijzigd door Salandur op 13-07-2005 16:31 . Reden: geblaat over een textarea ]

Assumptions are the mother of all fuck ups | iRacing Profiel


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 13 juli 2005 @ 16:27:
[...]


code:
1
opener.document.form_name.field_name.value = new_value;


de field_name heb ik in een variabele, maar ik heb allerlei manier geprobeerd("" en +-jes, etc.) om JS eerste de waarde van de variabele uit te laten rekenen en die dan in bovenstaande string te plakken, maar op een of andere manier wil dit maar niet werken.
Gebruik dan de 'lange' (en meer correcte) notatievorm:
JavaScript:
1
document.forms['form_name'].elements['field_name'].value = 'foo';

waarbij 'form_name' en 'field_name' ook een variabele kunnen zijn.
zie verder ook [rml][ Alg] Naamgeving[/rml]

form_name mag trouwens ook form_id zijn; het name-attribuut is in bijvoorbeeld HTML 4.01 Strict en XHTML geen geldig attribuut voor een form-element.

[ Voor 12% gewijzigd door crisp op 13-07-2005 16:41 ]

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op woensdag 13 juli 2005 @ 16:39:
[...]

Gebruik dan de 'lange' (en meer correcte) notatievorm:
JavaScript:
1
document.forms['form_name'].elements['field_name'].value = 'foo';

waarbij 'form_name' en 'field_name' ook een variabele kunnen zijn.
zie verder ook [rml][ Alg] Naamgeving[/rml]

form_name mag trouwens ook form_id zijn; het name-attribuut is in bijvoorbeeld HTML 4.01 Strict en XHTML geen geldig attribuut voor een form-element.
stom dat ik daar niet aan gedacht heb.
in iedergeval bedankt!

Verwijderd

Topicstarter
nog 1 laatste n00b vraag; sorry.......

Ik wil iedere keer als ik een textveld toevoeg, deze een andere naam geven (field1, field2, field3,...), maar met inner.HTML gaat dit niet. Hoe kan dit wel?

code:
1
2
3
4
5
6
7
8
9
function add_row(index) {
   index++;
   cntr++;
   var f_name = 'field'+cntr; // textveld naam
   var x = document.getElementById(table').insertRow(index);
   var a = x.insertCell(0);

   a.innerHTML = "<td width=\"70\"><input type=\"text\" value=\"add value\" name=f_name size=\"50\" maxlength=\"250\" onFocus=\"this.value=''\"></td>";
}

[ Voor 14% gewijzigd door Verwijderd op 13-07-2005 18:26 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

insertCell impliceerd al dat je een TD toevoegd, dus dat hoef je dan in je innerHTML niet meer te doen; je kan het dus zo doen:
JavaScript:
1
2
3
    var a = x.insertCell(0);
    a.width = 70;
    a.innerHTML = '<input type="text" value="add value" name="f_name" size="50" maxlength="250" onfocus="this.value=\'\'">';

of de input ook met DOM methodes aanmaken ( document.createElement('input') )

een andere name toekennen is een kwestie van de juiste string samenstellen...

[ Voor 13% gewijzigd door crisp op 13-07-2005 18:53 ]

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op woensdag 13 juli 2005 @ 18:51:
insertCell impliceerd al dat je een TD toevoegd, dus dat hoef je dan in je innerHTML niet meer te doen; je kan het dus zo doen:
JavaScript:
1
2
3
    var a = x.insertCell(0);
    a.width = 70;
    a.innerHTML = '<input type="text" value="add value" name="f_name" size="50" maxlength="250" onfocus="this.value=\'\'">';

of de input ook met DOM methodes aanmaken ( document.createElement('input') )

een andere name toekennen is een kwestie van de juiste string samenstellen...
dit werkt niet, want f_name is een variabele, maar wordt geinterpreteerd als een string.

[ Voor 10% gewijzigd door Verwijderd op 13-07-2005 19:32 ]


Verwijderd

Standaard string operaties :?

bla = 'melp ' + f_name + ' spef';

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 13 juli 2005 @ 19:40:
Standaard string operaties :?

bla = 'melp ' + f_name + ' spef';
nope, werkt helaas niet

Verwijderd

Onmogelijk :P Cheetah's suggestie moet werken :)

var a = x.insertCell(0);
a.width = 70;
a.innerHTML = '<input type="text" value="add value" name=\"' + f_name + '\" size="50" maxlength="250" onfocus="this.value=\'\'">';
Pagina: 1