Avatar billede supermand69 Nybegynder
10. september 2006 - 16:21 Der er 28 kommentarer og
1 løsning

nulstille input

Jeg har 2 inputs A og B..

Så snart man tilfører input B noget tekst skal input A nulstilles. Man må gerne klikke på input A uden at B nulstilles, det er bare først når value ændres at det skal ske
Avatar billede thooms Nybegynder
10. september 2006 - 19:23 #1
Skal nulstillingen ske før eller efter ændringerne er sendt (man trykker submit) ?
Avatar billede supermand69 Nybegynder
10. september 2006 - 19:31 #2
nej, det skal ske on-the-fly idet det sker.. altså idet value bliver ændret
Avatar billede mclemens Nybegynder
10. september 2006 - 22:27 #3
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

</head><body>
<form>
a: <input type="text" name="a" onchange="this.form.b.setAttribute('value','');"><br>
b: <input type="text" name="b" onchange="this.form.a.setAttribute('value','');">
</form>

Skriv i felter og tryk udentil (onchange)

</body></html>
Avatar billede mclemens Nybegynder
10. september 2006 - 22:35 #4
Mere udvidet ;)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.getAttribute("defaultValue")!=tn.getAttribute("value")){
    tn.form[tn2].setAttribute("value",tn.form[tn2].getAttribute("defaultValue"));
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a" onkeyup="chkinputab(this,'b');" onchange="chkinputab(this,'b');" value="Skriv i a"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');" value="Skriv i b">
</form>

Skriv i felterne - det andet felt nulstilles til standard value ... fjern evt. value definering hvis nulstilling skal give ingenting eller ret i scriptet:<br>tn.form[tn2].setAttribute("value",tn.form[tn2].getAttribute("defaultValue"));<br>til:<br>tn.form[tn2].setAttribute("value","");

</body></html>
Avatar billede mclemens Nybegynder
10. september 2006 - 22:43 #5
Hmm, kommer lige med et rettet eksempel ... Firefox vil åbenbart returnere value der er sat på et felt som både defaultValue og aktiv value ved check - derfor virker koden ikke i Firefox :D
Avatar billede mclemens Nybegynder
10. september 2006 - 22:49 #6
Hmmm, hvis vi bruger ældre js istedet for getAttribute og setAttribute er FF helt med på hvad der skal ske ( Ole, har fortalt mig tidligere at FF's dom var buggy - der ramte jeg så en af tingene :/ )



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.defaultValue!=tn.value){
    tn.form[tn2].value=tn.form[tn2].defaultValue;
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a" onkeyup="chkinputab(this,'b');" onchange="chkinputab(this,'b');" value="Skriv i a"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');" value="Skriv i b">
</form>

Skriv i felterne - det andet felt nulstilles til standard value ... fjern evt. value definering hvis nulstilling skal give ingenting eller ret i scriptet:<br>tn.form[tn2].setAttribute("value",tn.form[tn2].getAttribute("defaultValue"));<br>til:<br>tn.form[tn2].setAttribute("value","");

</body></html>
Avatar billede mclemens Nybegynder
10. september 2006 - 22:56 #7
Hvis den bare skal nulstille skal ovenstående
    tn.form[tn2].value=tn.form[tn2].defaultValue;
rettes til:
    tn.form[tn2].value="";
... undrer mig dog lidt over at FF
ikke slugte 10/09-2006 22:35:41 :/
Avatar billede olebole Juniormester
11. september 2006 - 15:52 #8
<ole>

mclemens >> FF opfører sig helt efter planen ... der er ingen attribut, som hedder 'defaultValue'  ;o)

/mvh
</bole>
Avatar billede mclemens Nybegynder
11. september 2006 - 16:31 #9
Ok, så føler jeg kun at FF fjumrer ved getAttribute("value")
... Og så fjumrer IE ved getAttribute("defaultValue") ...

Det er jo logisk / forståeligt nok - da der ikke er nogen attribut angivet som
defaultvalue="etellerandet" på input feltet ... Tak for rettelsen Ole :o)

... M.h.t. nedenstående test - er det så meningen at man skal bruge .value når
man validerer på value af input feltet ? Firefox returnerer element.defaultValue
når man beder om element.getAttribute("value") - virker lidt som om at den ikke
får det rettet inde i selve value elementet som den returnerer ved brug af getAttribute :/



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  alert("Input feltet med name=\""+tn.getAttribute("name")+"\"\n^ - Har value: "+tn.getAttribute("value")+"\n\nOg defalutValue: "+tn.defaultValue);
}
</script>

</head><body>
<form>
a: <input type="text" name="a" onkeyup="chkinputab(this,'b');" value="Skriv i a"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" value="Skriv i b">
</form>

</body></html>


(ovenstående var så grunden til at jeg udskiftede .getAttribute("value") med .value -selvom jeg føler det virker lidt forkert ... er jeg galt på den og opfører FF sig korrekt her også ? )
Avatar billede mclemens Nybegynder
11. september 2006 - 16:34 #10
Kogt ned til en kort formulering ...
Er .value mere korrekt eller ligeså godt som .getAttribute("value") ?
- value bør jo skiftes når man skriver i feltet eller
er FF toppen og IE bunden i denne sammenhæng ?
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:09 #11
hvad indebærer onkeyup?
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:17 #12
jeg har lige afprøvet det du har lavet og tror ikke du helt er med på hvad det helt er som skal ske

input A skal nulstilles (value = '') hvis value i input ændres
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:18 #13
i input B ændres*
Avatar billede mclemens Nybegynder
11. september 2006 - 18:26 #14
Som 10/09-2006 22:49:08 sammen med 10/09-2006 22:56:36
og så en betingelse på at du kun er a der skal nulstilles
når value i b ændres - altså så længe b er forskellig fra
ingenting / standard value - skal a nulstilles:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.defaultValue!=tn.value){
    tn.form[tn2].value=tn.form[tn2].defaultValue;
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a" onkeyup="chkinputab(this.form.b,'a');" onchange="chkinputab(this.form.b,'a');"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');">
</form>

</body></html>





... Hvis a kun skal nulstilles når man piller i b - og ikke når man retter inde i selve a skal den se sådan her ud:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.defaultValue!=tn.value){
    tn.form[tn2].value=tn.form[tn2].defaultValue;
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');">
</form>

</body></html>






- Hvis det modsatte felt af det man piller i skal nulstilles så er det
10/09-2006 22:49:08 sammen med 10/09-2006 22:56:36:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.defaultValue!=tn.value){
    tn.form[tn2].value=tn.form[tn2].defaultValue;
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a" onkeyup="chkinputab(this,'b');" onchange="chkinputab(this,'b');"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');">
</form>

</body></html>
Avatar billede mclemens Nybegynder
11. september 2006 - 18:30 #15
- I de ovenstående 3 eksempler skal

    tn.form[tn2].value=tn.form[tn2].defaultValue;

rettes til:

    tn.form[tn2].value="";

for at få den helt nulstillet - ellers nulstiller den til standard værdien
(i ovenstående 3 eksempler er standard værdien så "" i forvejen).

...

Den jeg lavede i 11/09-2006 16:31:36 - var en lille forespørgsel på
getAttribute da Ole spredte lidt af hans guldkorn ud :o)
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:31 #16
noget i den her stil

<script type="text/javascript">
function chkinputab(input, cur_input)
{
    if(input.getAttribute('value') != input.defaultValue)) document.getElementById(cur_input).value = '';
}
</script>

<form>
a: <input id="cur_input" type="text" value="1"><br>
b: <input type="text" onkeyup="chkinputab(this, 'cur_input')" value="Test">
</form>
Avatar billede mclemens Nybegynder
11. september 2006 - 18:45 #17
Kan du ikke have name på input feltet?
Avatar billede mclemens Nybegynder
11. september 2006 - 18:47 #18
.getAttribute('value') virker som sagt ikke i Firefox ... derfor brugte jeg .value
- dit eksempel svarer til nr. 2 i 18:26:54 med rettelsen som står i toppen af 18:30:40
Avatar billede mclemens Nybegynder
11. september 2006 - 18:48 #19
Hvis det skal fungere som i 11/09-2006 18:31:16 kan det se sådan her ud:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(tn,tn2){
  if(tn.defaultValue!=tn.value){
    tn.form[tn2].value="";
  }
}
</script>


</head><body>
<form>
a: <input type="text" name="a"><br>
b: <input type="text" name="b" onkeyup="chkinputab(this,'a');" onchange="chkinputab(this,'a');">
</form>

</body></html>
Avatar billede mclemens Nybegynder
11. september 2006 - 18:50 #20
onchange har jeg med af hensyn til copy'n'paste af en text streng
onkeyup fanger ikke copy'n'paste via. mus eller rediger menuen)
Avatar billede mclemens Nybegynder
11. september 2006 - 18:51 #21
Hvis du vil fange via. id kan det se ud som her:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function chkinputab(input,cur_input){
  if(input.defaultValue!=input.value){
    document.getElementById(cur_input).value = '';
  }
}
</script>


</head><body>
<form>
a: <input type="text" id="cur_input"><br>
b: <input type="text" onkeyup="chkinputab(this,'cur_input');" onchange="chkinputab(this,'cur_input');">
</form>

</body></html>
Avatar billede mclemens Nybegynder
11. september 2006 - 18:52 #22
(slet evt. onchange hvis du føler den er
overflødig i det miljø du skal bruge den ...)
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:59 #23
ja, sådan der :)

den skal selvfølgelig også virke ved copy/paste, men om jeg har onchange med eller ej giver samme resultat.. den sletter stadig value i mit input
Avatar billede supermand69 Nybegynder
11. september 2006 - 18:59 #24
<script type="text/javascript">
function chkinputab(input,cur_input){
  if(input.defaultValue!=input.value){
    document.getElementById(cur_input).value = '';
  }
}
</script>


</head><body>
<form>
a: <input type="text" id="cur_input" value="23"><br>
b: <input type="text" onkeyup="chkinputab(this,'cur_input')" value="test">
</form>
Avatar billede mclemens Nybegynder
11. september 2006 - 19:08 #25
D.v.s. du vil have denne istedet ?

<script type="text/javascript">
function chkinputab(input,cur_input){
  if(input.defaultValue!=input.value){
    tn=document.getElementById(cur_input);
    if(tn.defaultValue!=tn.value)tn.value = '';
  }
}
</script>
Avatar billede supermand69 Nybegynder
11. september 2006 - 19:13 #26
jeg bruger den her

function reset_track(input, cur_input)
{
    if(input.defaultValue != input.value) document.getElementById(cur_input).value = '';
}

men jeg siger bare at det er underordnet om man har onchange med.. :)

onkeyup tager også copy/paste
Avatar billede supermand69 Nybegynder
11. september 2006 - 19:14 #27
- og tak for hjælpen :)
Avatar billede mclemens Nybegynder
11. september 2006 - 19:23 #28
Velbekom, og tak for point :o)

[ men jeg siger bare at det er underordnet om man har onchange med.. :)
onkeyup tager også copy/paste ] Jeg desværre stadig lidt uenig på det punkt, da onkeyup ikke tager copy/paste når du gør det via. højreklik med musen og så venstre klik på
sæt ind - og heller ikke når man vælger rediger i browser menuen med musen og så sæt ind ... eller rettere den gør ikke i de browsere jeg bruger ... (IE 6.0 og FF 1.5.0.4)

[ 11/09-2006 18:50:04 - ligesom jeg nævnte i det indlæg ... men
hvis man copy/paster via tastatur fanges det - ellers ikke. ]
Avatar billede supermand69 Nybegynder
11. september 2006 - 19:42 #29
ok, jeg tager onchange med :p
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