[JS] Menu/lists en radiobuttons (OnSelect en OnLoad) *

Pagina: 1
Acties:

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Ik ben bezig met een intranet applicatie in 9 talen en daardoor dus redelijk complex en dynamisch. Ik ben al een aardig eindje op weg, echter nu zit ik vast op een stukje Javascript :(

Wat ik wil bereiken:
Er is een 3-tal radiobuttons (Status, values 1,2 en 3). Default value bij Form-submit = 1.
De radiobuttons zijn alle 3 default "disabled".

Bij het inladen van de Recordset moet de betreffende radiobutton geselecteerd en "enabled" worden worden.

Daarnaast moet optie 2 geselecteerd en enabled worden wanneer er een waarde > 0 gekozen wordt uit een andere list/menu (AgencyName1).

Optie 3 moet worden geselecteerd en "enabled" wanneer in de 3 textvelden (NameAuthoriser, FunctionAuthoriser en DateSignature) ongelijk zijn aan "null".

Ik heb de volgende code maar het werkt niet naar behoren :( (De betreffende radiobutton wordt niet enabled).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[ASP]
<body Onload="enable_radiobutton_check_1(this.input);enable_radiobutton_check_2(this.input);enable_radiobutton_check_3(this.input);">

<select name="AgencyName1" id="AgencyName1" OnChange="enable_radiobutton_1(this.input)">

<input name="NameAuthoriser" type="text" disabled id="NameAuthoriser" value="<%=(OpenCreditChecks.Fields.Item("NameAuthoriser").Value)%>" size="32" OnBlur="enable_radiobutton_3(this.input)" OnChange="enable_radiobutton_3(this.input)">

<input name="FunctionAuthoriser" type="text" disabled id="FunctionAuthoriser" value="<%=(OpenCreditChecks.Fields.Item("FunctionAuthoriser").Value)%>" size="32"OnBlur="enable_radiobutton_3(this.input)" OnChange="enable_radiobutton_3(this.input)">

<input name="DateSignature" type="text" disabled id="DateSignature" value="<%=(OpenCreditChecks.Fields.Item("DateSignature").Value)%>" size="32" OnBlur="enable_radiobutton_3(this.input)" OnChange="enable_radiobutton_3(this.input)">

<input <%If (CStr((OpenCreditChecks.Fields.Item("Status").Value)) = CStr("1")) Then Response.Write("CHECKED") : Response.Write("")%>  name="Status" id="Status1" type="radio" value="1" disabled>
<input <%If (CStr((OpenCreditChecks.Fields.Item("Status").Value)) = CStr("2")) Then Response.Write("CHECKED") : Response.Write("")%> name="Status" id="Status2" type="radio" value="2" disabled>
<input <%If (CStr((OpenCreditChecks.Fields.Item("Status").Value)) = CStr("3")) Then Response.Write("CHECKED") : Response.Write("")%> name="Status" type="radio" id="Status3" value="3" disabled>

[/ASP]

[JS]
function enable_radiobutton_3(input){
if (document.all || document.getElementById){
if (document.CreditCheckForm.NameAuthoriser.value != "" && CreditCheckForm.FunctionAuthoriser.value != "" && CreditCheckForm.DateSignature.value != "")
document.CreditCheckForm.Status3.disabled=false;
else
document.CreditCheckForm.Status3.disabled=true;
}
}

function enable_radiobutton_1(input){
if (document.all || document.getElementById){
if (document.CreditCheckForm.AgencyName1.value > 0)
document.CreditCheckForm.Status1.disabled=true, document.CreditCheckForm.Status1.checked=false, 
document.CreditCheckForm.Status2.disabled=false;
document.CreditCheckForm.Status2.checked=true, 
else
document.CreditCheckForm.Status1.disabled=false,document.CreditCheckForm.Status2.checked=false, document.CreditCheckForm.Status3.checked=false, document.CreditCheckForm.Status1.checked=true
}
}
[/JS]

Alvast bedankt!

webOS all the way!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:07

gorgi_19

Kruimeltjes zijn weer op :9

Met een lap code kunnen we op zich ook weinig. Waar zit het probleem? Kijk eens naar de geparsde HTML? Staat hier de code goed in? Zo ja, dan heb je niets te maken met ASP. Zo nee, dan heb je niets te maken met JS. Oftewel; isoleer het probleem eens.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
gorgi_19 schreef op woensdag 27 april 2005 @ 20:06:
Met een lap code kunnen we op zich ook weinig. Waar zit het probleem? Kijk eens naar de geparsde HTML? Staat hier de code goed in? Zo ja, dan heb je niets te maken met ASP. Zo nee, dan heb je niets te maken met JS. Oftewel; isoleer het probleem eens.
Het ligt aan de JS. Nu ben ik geen wizard in JS, dus daar zou het wel eens aan kunnen liggen.

De OnChange/OnSelect/OnBlur's doen het op zich wel. Maar om alles interactief te laten werken d.m.v. hetgeen er in de lists en/of textboxen staat doet het niet zoals het zou moeten. (OnLoad blijft alles disabled, zelfs wanneer ik aangeef dat disabled = false zou moeten zijn wanneer checked = true).

webOS all the way!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:07

gorgi_19

Kruimeltjes zijn weer op :9

Als het aan de JS ligt, dan heeft ASP er niets mee te maken en hebben we meer aan de geparsde versie van de pagina. Verder hoort Javascript in Webdesign & Graphics

Oftewel: >> Webdesign & Graphics

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dirtbiter
  • Registratie: Maart 2002
  • Laatst online: 06-05 12:31
Als ik het goed zie is dit stuk:
JavaScript:
1
2
3
4
if (document.CreditCheckForm.AgencyName1.value > 0)
document.CreditCheckForm.Status1.disabled=true, document.CreditCheckForm.Status1.checked=false, 
document.CreditCheckForm.Status2.disabled=false;
document.CreditCheckForm.Status2.checked=true,


Complete onzin. Je opent die 2e if niet, met {}... Daarna ga je dingen doen die bij die "if" te horen, maar het gebruik van komma en puntkomma lijkt bijna random. FF je code opschonen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[JS]
function enable_radiobutton_3(input)
{
  if (document.all || document.getElementById)
  {
    if (document.CreditCheckForm.NameAuthoriser.value != "" && CreditCheckForm.FunctionAuthoriser.value != "" && CreditCheckForm.DateSignature.value != "")
    {
      document.CreditCheckForm.Status3.disabled=false;
    }
    else
    {
      document.CreditCheckForm.Status3.disabled=true;
    }
  }
  else
  {
    return(0);
  }
}

function enable_radiobutton_1(input)
{
  if (document.all || document.getElementById)
  {
    if (document.CreditCheckForm.AgencyName1.value > 0)
    {
      document.CreditCheckForm.Status1.disabled=true;
      document.CreditCheckForm.Status1.checked=false; 
      document.CreditCheckForm.Status2.disabled=false;
      document.CreditCheckForm.Status2.checked=true;
    }
    else
    {
      document.CreditCheckForm.Status1.disabled=false;
      document.CreditCheckForm.Status2.checked=false;
      document.CreditCheckForm.Status3.checked=false;
      document.CreditCheckForm.Status1.checked=true;
    }
  }
  else
  {
    return(0);
  }
}
[/JS]


Probeer dit eens...

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Bedankt :) Dat ga ik eens proberen :)
Ik laat het resultaat wel weten :)

webOS all the way!


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

crisp

Devver

Pixelated

wat is
code:
1
this.input

:?

Het wijst nergens naar, en in je functies doe je ook niets met de parameter.

Verder zal (in non-IE browsers) document.CreditCheckForm.Status1 niet bestaan aangezien Status1 de waarde is van een ID attribuut en niet van een NAME.
Je zal dus document.getElementById moeten gebruiken.

Intentionally left blank


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
crisp schreef op vrijdag 29 april 2005 @ 18:03:
wat is
code:
1
this.input

:?

Het wijst nergens naar, en in je functies doe je ook niets met de parameter.

Verder zal (in non-IE browsers) document.CreditCheckForm.Status1 niet bestaan aangezien Status1 de waarde is van een ID attribuut en niet van een NAME.
Je zal dus document.getElementById moeten gebruiken.
Ik heb aan de radiobuttons dezelfde naam toegekend, maar wel een eigen ID ;)

webOS all the way!


  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 17-03 10:14

Hermanvh

webOS fan, hacker, developer

Topicstarter
Beetje late reply, maar ben pas verhuisd en had dus nog geen internet :( Het lijkt nu inderdaad te werken. Ik kwam ook een Javascript "compiler" tegen die checkt of je code "goed" is :)

JSLint :)

webOS all the way!


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

crisp

Devver

Pixelated

Hermanvh schreef op zaterdag 11 juni 2005 @ 21:13:
Beetje late reply, maar ben pas verhuisd en had dus nog geen internet :( Het lijkt nu inderdaad te werken. Ik kwam ook een Javascript "compiler" tegen die checkt of je code "goed" is :)

JSLint :)
Ik gebruik zelf de 'strict JS warnings' optie in de webdeveloper toolbar; deze 'verifier' gaat nog een flinke stap verder, op sommige punten zelfs te ver naar mijn smaak ;)
Wel een interessant tooltje though, het dwingt je in ieder geval nette javascript te schrijven, en daar zie ik nog steeds te weinig van :)

[ Voor 12% gewijzigd door crisp op 11-06-2005 23:22 ]

Intentionally left blank

Pagina: 1