Avatar billede karsten_larsen Praktikant
11. april 2004 - 11:41 Der er 9 kommentarer og
1 løsning

script virker ikke under SSL, men godt uden SSL

Jeg benytter følgende script til at flytte data fra et input felt til et andet.

Det fungerer PERFEKT uden SSL. Så snart forbindelsen er sikret virker scriptet ikke. Der kommer en fejl [windows advarsel pop up] meddelelse at et objekt var ventet i linie 7.

Det er function moveSelectedOptions som aktiverer fejlen [= linie7].


Hvordan får jeg det til at virke med SSL?

???????:-) karsten_larsen


Scriptet er som følgende:


<script language="JavaScript1.2" type="text/JavaScript1.2">

function selectAllOptions(obj){for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}

function moveSelectedOptions(from,to){if(arguments.length>3){var regex = arguments[3];if(regex != ""){unSelectMatchingOptions(from,regex);}}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}for(var i=(from.options.length-1);i>=0;i--){var o = from.options[i];if(o.selected){from.options[i] = null;}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(from);sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}

function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}

</script>



Sådan kaldes scriptet i filen:

<SELECT ondblclick="moveSelectedOptions(this.form['list1'],this.form['list2'])"  multiple style="width:120px" size='4' name=list1>                     

<option value='2'>a</option>
<option value='3'>b</option>
<option value='4'>c</option>
<option value='5'>d</option>
<option value='6'>e</option>
<option value='7'>f</option>
<option value='8'>g</option>
<option value='9'>h</option>
<option value='10'>i</option>
<option value='11'>j</option>

</select>
                 

<SELECT ondblclick="moveSelectedOptions(this.form['list2'],this.form['list1'])"  multiple style="width:120px" size='4' name=list2>
</SELECT>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<INPUT class="input" onclick="moveSelectedOptions(this.form['list1'],this.form['list2'])" type=button value=">>" name=right>
<INPUT class="input" onclick="moveAllOptions(this.form['list1'],this.form['list2'])" type=button value="Alle >>" name=right>
<INPUT class="input" onclick="moveAllOptions(this.form['list2'],this.form['list1'])" type=button value="Fjern &lt;&lt;" name=left>
<input class="input" onClick="moveSelectedOptions(this.form['list2'],this.form['list1'])" type=button value="<<" name=left2>
</td>
Avatar billede roenving Novice
11. april 2004 - 18:10 #1
Jeg gætter på, at det er en generel sikkerheds-advarsel, fordi javascript kan udføre grimme ting ved data ...

Men hvis ikke kan du debugge ved at opdele javascriptet i linjer, så du kan finde ud af, hvilken kommando/metode, som udløser fejlen ...

Indsæt linjeskift efter alle forekomster af ; og {
Avatar billede karsten_larsen Praktikant
11. april 2004 - 20:55 #2
roenvig ->
Scriptet er opdelt efter ; og {.

Præcisering af fejl, se nedenfor i scriptet. Kan det løses eller skal jeg se mig om efter andre løsninger?
??:-) karsten_larsen

function moveSelectedOptions(from,to){
    if(arguments.length>3){
    var regex = arguments[3];
    if(regex != ""){
    unSelectMatchingOptions(from,regex);
    }}for(var i=0;
    i<from.options.length;i++){
    var o = from.options[i];
    if(o.selected){
    to.options[to.options.length] = new Option( o.text, o.value, false, false);
    }}for(var i=(from.options.length-1);
    i>=0;i--){
    var o = from.options[i];
    if(o.selected){
    from.options[i] = null;
    }}if((arguments.length<3) ||(arguments[2]==true)){
fejl->    sortSelect(from);
    sortSelect(to);
    }from.selectedIndex = -1;
    to.selectedIndex = -1;
    }
Avatar billede roenving Novice
11. april 2004 - 21:19 #3
Det undrede mig faktisk, at du havde kald til to funktioner, som ikke så ud til at være i brug, de må da findes der hvor du har fået scriptet:

function unSelectMatchingOptions(from,regex) og
function sortSelect(sel)

-- argumenterne hedder nok noget andet ...

Dog kan det undre, at den overhovedet kommer ind i den blok, da du jo ikke har et tredje argument ...

-- en hurtig test kunne være:

<INPUT class="input" onclick="moveSelectedOptions(this.form['list1'],this.form['list2'],false)" type="button" value=">>" name="right">
Avatar billede karsten_larsen Praktikant
11. april 2004 - 22:10 #4
roenvig ->
scriptet er fra http://www.mattkruse.com/javascript/optiontransfer/

den hurtige test virker, så de andre input bliver som følger

<INPUT class="input" onclick="moveAllOptions(this.form['list1'],this.form['list2'],false)" type="button" value="Alle >>" name="right">
<INPUT class="input" onclick="moveAllOptions(this.form['list2'],this.form['list1'],false)" type="button" value="Fjern &lt;&lt;" name="left">
<INPUT class="input" onclick="moveSelectedOptions(this.form['list1'],this.form['list2'],false)" type="button" value=">>" name="right">
<INPUT class="input" onclick="moveSelectedOptions(this.form['list2'],this.form['list1'],false)" type="button" value="<<" name="left">

og de udløser ingen fejl.

Funktionen med dobbelt klik og automatisk overføring udløser stadig fejl det samme sted.

Hvad kan slettes for at gøre koden så ren som muligt?
Avatar billede roenving Novice
11. april 2004 - 22:16 #5
Hjælper det ikke på dobbeltklikket at sætte ,false ind ?-)

-- og umiddelbart vil jeg ikke anbefale at slette eller ændre noget, da jeg foretrækker at holde info sammen, for man kunne godt bede en funktion om at skelne, men det gør det bare sværere at vedligeholde !-)
Avatar billede karsten_larsen Praktikant
11. april 2004 - 22:20 #6
,false hjælper ikke på dobbeltklikket.

?:-)karsten_larsen
Avatar billede roenving Novice
11. april 2004 - 22:53 #7
Den kørte ellers uden problemer for mig ?-)

-- men jeg glemte først at sætte den på begge to, så jeg fik en fejl !-)
Avatar billede karsten_larsen Praktikant
12. april 2004 - 08:58 #8
nåeh - ja, det havde jeg glemt. Roenvig vil du lave et svar og mange tak for hjælpen.

:-) karsten_larsen

Til andre som kan bruge det til noget er løsningen som virker med og uden SSL.

<html>
<head>
<script language="JavaScript1.2" type="text/JavaScript1.2">
function selectAllOptions(obj){for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}
function moveSelectedOptions(from,to){
    if(arguments.length>3){
    var regex = arguments[3];
    if(regex != ""){
    unSelectMatchingOptions(from,regex);
    }}for(var i=0;
    i<from.options.length;i++){
    var o = from.options[i];
    if(o.selected){
    to.options[to.options.length] = new Option( o.text, o.value, false, false);
    }}for(var i=(from.options.length-1);
    i>=0;i--){
    var o = from.options[i];
    if(o.selected){
    from.options[i] = null;
    }}if((arguments.length<3) ||(arguments[2]==true)){
    sortSelect(from);
    sortSelect(to);
    }from.selectedIndex = -1;
    to.selectedIndex = -1;
    }
function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}
</script>
</head>
<body >

<form action="https://www.domain.dk" method="post">

<SELECT ondblclick="moveSelectedOptions(this.form['list1'],this.form['list2'],false)"  multiple style="width:120px" size='4' name=list1>                     
<option value='2'>a</option>
<option value='3'>b</option>
<option value='4'>c</option>
<option value='5'>d</option>
<option value='6'>e</option>
<option value='7'>f</option>
<option value='8'>g</option>
</select>
                 
<SELECT ondblclick="moveSelectedOptions(this.form['list2'],this.form['list1'],false)"  multiple style="width:120px" size='4' name=list2>
</SELECT>

<INPUT class="input" onclick="moveSelectedOptions(this.form['list1'],this.form['list2'],false)" type="button" value=">>" name="right">
<INPUT class="input" onclick="moveAllOptions(this.form['list1'],this.form['list2'],false)" type="button" value="Alle >>" name="right">
<INPUT class="input" onclick="moveAllOptions(this.form['list2'],this.form['list1'],false)" type="button" value="Fjern &lt;&lt;" name="left">
<INPUT class="input" onclick="moveSelectedOptions(this.form['list2'],this.form['list1'],false)" type="button" value="<<" name="left">
                   
</form>

</body>
</html>
Avatar billede roenving Novice
12. april 2004 - 17:25 #9
Velbekomme '-)
Avatar billede roenving Novice
12. april 2004 - 19:45 #10
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging