Avatar billede wildthing Nybegynder
16. marts 2004 - 12:22 Der er 15 kommentarer og
1 løsning

Validering af hvilken submit der anvendes

Jeg har en ASP formular hvor jeg har flere submitknapper.

HVis jeg anvender "onsubmit" fra form-tagget vil jeg gerne kunne lave en if sætning i mit javascript som kan returnere om der er knap 'xyx' der specifikt er trykket på.
Det jeg oplever er at alle knappers værdi er sat uanset om de er blevet trykket på, og derfor returnerer if sætningen altid true uanset hvad.

Wildthing
Avatar billede nute Nybegynder
16. marts 2004 - 13:02 #1
det kan du ikke med mindre du angiver at en knap har blevet trykket på. men hvad skal du med det ? skal der ske noget på klienten når du klikker på de forskellige submits ?
Avatar billede wildthing Nybegynder
16. marts 2004 - 13:35 #2
Jeg ved meget lidt om java...
Jeg kan snildt lave det i asp, modtager siden, men jeg synes det ser bedre ud med det lille prompt vindue på klienten.
Jeg har 2 knapper. Den ene er en save knap som brugeren anveder hver gang der sker tilføjelser. Sidste gang han ændrer noget trykker han på en "afslut" knap, som så gemmer men derudover ved modtager siden (save.asp) at der skal skiftes status. kan du følge mig "nute".
Når han trykker afslut er der en selectbox der ikke må stå på en bestemt værdi. hvis den gør det skal brugeren have en prompt, så han kan ændre data(selectboxen) og "afslutte" igen. Da jeg ikke vil have denne validering af selectboxen ved "save". behøver jeg at vide hvilken knap der sender formen afsted til save.asp.

wildthing
Avatar billede nute Nybegynder
16. marts 2004 - 14:08 #3
jeg ville have gjort det på denne måde:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var g_objButton = null;
    function setButton( objButton )
    {
        g_objButton = objButton;
    }
    function submitForm()
    {
        if( g_objButton.id == "to" )
        {
            alert( "Hey ... du klikket på den forkerte knap" );
        }
        else
        {
            alert( "Alles in ordnung" )
        }
        return false;
    }
    //-->
    </script>
</head>

<body>
<form id="frm" onsubmit="return submitForm();">
<input type="submit" name="en" id="en" onclick="setButton( this );">
<input type="submit" name="to" id="to" onclick="setButton( this );" value="Denne giver en 'fejl'">
<input type="submit" name="tre" id="tre" onclick="setButton( this );">
</form>
</body>
</html>

/nute
Avatar billede roenving Novice
16. marts 2004 - 21:22 #4
<form action="noget.asp" onsubmit="return (this.selectbox.selectedIndex!=1)">

<select name="selectbox">
<option value="lovlig">Første værdi</option>
<option value="ulovlig">Anden (og ulovlige !-) værdi</option>
<option value="lovlig">Tredje værdi</option>
</select>

<input type="submit" value="Save" onclick="this.form.action+='?submit=save'">
<input type="submit" value="Afslut" onclick="this.form.action+='?submit=afslut'">
</form>
Avatar billede wildthing Nybegynder
17. marts 2004 - 08:07 #5
Nute din kode ser med mine nove evner i java god ud.
roenving. Din kode ser dejlig simpel ud, uden at jeg helt er med på hvordan den udfører jobbet ( det kan jeg godt lide at have styr på)
f.eks: (this.selectbox.selectedIndex!=1)"> og this.form.action+='?submit=save' har jeg umiddelbart svært ved at gennemskue.

Jeg vil asap vende tilbage når jeg har prøvet dem af...

wildthing
Avatar billede wildthing Nybegynder
17. marts 2004 - 09:43 #6
roenving: Jeg er novice, men efter hvad jeg kan se og teste dur din ikke, da begge knapper opfører sig ens. Som jeg ser og tester det, er onclick på begge knapper ikke til megen gavn. Det er alene indexet i onsubmit der styrer slaget, og derved VIL alle kanpper opføre sig ens. Hvad onclick skulle gøre i denne sammenhæng, ville være rar at vide:)
Nute: Det virker perfekt, når altså lige 'return false' og 'return true' indsættes korrekt i scriptet. du mangler lige et "svar" til pointgivning
Avatar billede nute Nybegynder
17. marts 2004 - 09:47 #7
wildthing >> jeg har også prøvet at skrive det så overskueligt som muligt - desværre, så har jeg ramt godt ved siden af dit ønske. Jeg har jo ingen dropdown med,  noget roenving har.

Denne linje:

onsubmit="return (this.selectbox.selectedIndex!=1)"

kan læses sådan.

når formularet bliver submittet, så tjekkes der for om valg nummer 2 er valgt eller ikke. Dette svar returneres i form af true eller false. selectedIndex refererer til den option der er valgt i en selectbox. Når man tæller options, så starter man på 0, og derfor så refererer 'selectedIndex!=1' til option nummer 2. != betyder "ikke lig med", så dét der faktisk bliver testet på, er om den valgte option *ikke* er valg nummer 2 (som er "ulovlig" i hans eksempel)

this.form.action+='?submit=save' og this.form.action+='?submit=afslut' *vil* opføre sig på samme måde ... formen bliver submittet, men der bliver sat et andet parameter på querystringen ved valg af save end afslut. Hvis du ikke ønsker at dit formular bliver submittet ved Afslut, så kan du jo bare droppe 'onclick' på din knap

/nute
Avatar billede wildthing Nybegynder
17. marts 2004 - 10:01 #8
Korrekt nute, jeg havde så meget focus på knapperne. Tak for forklaringerne, men (måske forstår jeg det ikke) er det du siger at roenvings løsning er det korrekte under hensyntagen til at selectboxen skal være med. I så fald skal jeg have fundet ud af hvad jeg skal gøre for at sikre at "save" bare submitter uden videre, modsat "afslut" der ikke må submittes hvis valg 2 er valgt.
Avatar billede wildthing Nybegynder
17. marts 2004 - 10:04 #9
iøvrigt så promptes brugeren ikke  med en forklaring, i roenvings forslag.
Avatar billede nute Nybegynder
17. marts 2004 - 10:11 #10
der kan laves en kombination af mit og roenvings forslag

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    var g_objButton = null;
    function setButton( objButton )
    {
        g_objButton = objButton;
    }
    function submitForm( objForm )
    {
        if( g_objButton.id == "afslut" )
        {
            if( objForm.selectbox.selectedIndex == 1 )
            {
                alert( "hov hov hov !!! ikke vælge nummer 2 !!!" );
                return false;
            }
        }
        return true
    }
    //-->
    </script>
</head>

<body>
<form id="frm" onsubmit="return submitForm( this );">
<select name="selectbox" size="3">
<option value="lovlig">Første værdi</option>
<option value="ulovlig">Anden (og ulovlige !-) værdi</option>
<option value="lovlig">Tredje værdi</option>
</select>
<input type="submit" name="save" id="save" onclick="setButton( this );" value="save">
<input type="submit" name="afslut" id="afslut" onclick="setButton( this );" value="Afslut">
</form>
</body>
</html>

/nute
Avatar billede wildthing Nybegynder
17. marts 2004 - 10:49 #11
nute>> kanon. testen virker, men selectindex giver bare lige et problem.

boxen viser jo det tidligere valgte  'valg' der ligger gemt i DB. dvs. at hvis værdien xyx er valgt (xyx er den vædi der ikke må gemmes ved "afslut") ja så er det index 0 der skal være ulovlig. Hvis nu der står 'æøæ' på index 0 (fra DB), men brugeren vælger nummer 2 på listen 'xyx'før tryj på "afslut" sker, ja så er det index 2 der er ulovlig.
Kan man ikke bare lade if sætningen evaluere indholdet af index 0, index 1 osv.

har prøvet med            if( objForm.selectbox.selectedIndex.value == 'xyx' )
men så sker der slet ikke noget...
Avatar billede nute Nybegynder
17. marts 2004 - 10:53 #12
prøv med

objForm.selectbox.options[ objForm.selectbox.selectedIndex ].value == 'xyz'
Avatar billede wildthing Nybegynder
17. marts 2004 - 11:05 #13
det virker hvis jeg tager et valg, men ikke hvis jeg blot submitter med den værdi der står i selectboxen fra DB ( ligesom om den slet ikke bliver evalueret, hvis jeg ikke laver et nyt valg fra boxen)

Replaced er den ulovlige værdi

<select  class="allan_hvid" SIZE="-1" name="ActionType" STYLE=" width:67%">
<option><%=rs.fields("ActionType")%></option>
<option value="Replaced">Replaced</Option>
<option value="Repair">Repair</Option>
<option value="Claim">Claim</Option>
<option value="Credit">Credit</Option>
</select>
Avatar billede wildthing Nybegynder
17. marts 2004 - 11:08 #14
Og der er lidt sært da

<option value="Replaced">Replaced</Option>

ved index nummer metoden har den jo nummer 1.
for s....  der mangler en value i første linie...
Avatar billede wildthing Nybegynder
17. marts 2004 - 11:12 #15
Huhej så virker det da....
<option><%=rs.fields("ActionType")%></option> manglede en value=xxxxx

Takker og bukker. hvis du vil sende et svar får du point >>nute
lille spørgsmål
hvorfor står der nogle gange
  <!--
  //-->
og nogle gange ikke. hvad betyder det egentlig?
Avatar billede nute Nybegynder
17. marts 2004 - 12:30 #16
fino ...

<!--
//-->

skjuler javascript koden for browsere der ikke forstår javascript ;o]
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