Supportnet / Forum / Skripte(PHP,ASP,Perl...)
wenn option = ja zeige textfeld 1 sonst textfeld 2
Frage
Hey,
ich möchte, dass beim Ausfüllen des Formulares per auswahliste abgeben wird ob pro std oder pro km abgerechnet wird. und je nachdem welche option ausgewählt wird, soll dahinter das entsprechende Feld zum eingeben des Preises angezeigt werden.
Ich möchte somit verhindern, dass der Kilometersatz bei Std.satz reingeschrieben. Da es sonst später beim Auswerten mit sql Probleme gibt.
Hat jmd. eine Idee wie man das realisieren könnte?
Mein Versuch klappt leider nicht:
<select name="me" size="1" class="searchField">
<option value="1" >€/h</option>
<option value="2" >€/km</option>
</select>
<input type="text" name="prokm" maxlength="50" type="<? echo ($me==1) ? "hidden" : "text" ?>">
<input type="text" name="prostd" maxlength="50" type="<? echo ($me==1) ? "hidden" : "text" ?>">
Antwort 1 von Fassy91
also wie kommt das PHP Script an das value ?
ich würed das net mit php sondern mit Javascript machen.
ich würed das net mit php sondern mit Javascript machen.
Antwort 2 von stefanie79
ja genau das ist das Problem. Wie mache ich das mit Javascript, habe davon keine Ahnung :(
Antwort 3 von Fassy91
also das ist ganz einfach.
Du gibst den inputs eine ID.
<input type="hidden" name="prostd" maxlength="50" id="prostd">
<input type="text" name="prokm" maxlength="50" id="prokm">
so das ist die einzige veränderung die du an den inputs machen musst.
nun zum select
<select id="me" size="1" class="searchField" onChange="inputchange(this.selectedIndex)">
<option value="prostd">Pro Stunde</option>
<option value="prokm">Pro Kilometer</option>
</select>
so und nun brauchen wir eine Funktion die das alles ändert
<script type="text/javascript">
function inputchange(index)
{
if (index == 1)
{
document.getElementById('prostd').type = "text";
document.getElementById('prokm').type = "hidden";
}
if (index == 2)
{
document.getElementById('prostd').type = "hidden";
document.getElementById('prokm').type = "text";
}
document.getElementById('prostd').value = "";
document.getElementById('prokm').value = "";
}
</script>
So in etwa muss das aussehen
mfg
Fassy91
Du gibst den inputs eine ID.
<input type="hidden" name="prostd" maxlength="50" id="prostd">
<input type="text" name="prokm" maxlength="50" id="prokm">
so das ist die einzige veränderung die du an den inputs machen musst.
nun zum select
<select id="me" size="1" class="searchField" onChange="inputchange(this.selectedIndex)">
<option value="prostd">Pro Stunde</option>
<option value="prokm">Pro Kilometer</option>
</select>
so und nun brauchen wir eine Funktion die das alles ändert
<script type="text/javascript">
function inputchange(index)
{
if (index == 1)
{
document.getElementById('prostd').type = "text";
document.getElementById('prokm').type = "hidden";
}
if (index == 2)
{
document.getElementById('prostd').type = "hidden";
document.getElementById('prokm').type = "text";
}
document.getElementById('prostd').value = "";
document.getElementById('prokm').value = "";
}
</script>
So in etwa muss das aussehen
mfg
Fassy91
Antwort 4 von stefanie79
DANKE @Fassy91
Antwort 5 von katy
Hallo stefanie79,
das Verfahren von Fassy91 hat ein kleines Problem: nicht alle Internet-Explorer mögen type-Änderungen bei input-Feldern.
Sicherer ist sowas wie
document.getElementById('prostd').style.visibility= "visible";
document.getElementById('prokm').style.visibility = "hidden";
kombiniert mit
<input type="text"
für beide.
Wenn eins von vornherein unsichtbar sein soll, schreibe das ins CSS.
Sicher ist diese Vorprüfung mittels JavaScript aber sowieso nicht. Du musst unbedingt serverseitig die Daten mit PHP nochmals prüfen.
katy
das Verfahren von Fassy91 hat ein kleines Problem: nicht alle Internet-Explorer mögen type-Änderungen bei input-Feldern.
Sicherer ist sowas wie
document.getElementById('prostd').style.visibility= "visible";
document.getElementById('prokm').style.visibility = "hidden";
kombiniert mit
<input type="text"
für beide.
Wenn eins von vornherein unsichtbar sein soll, schreibe das ins CSS.
Sicher ist diese Vorprüfung mittels JavaScript aber sowieso nicht. Du musst unbedingt serverseitig die Daten mit PHP nochmals prüfen.
katy
Antwort 6 von Teerbaby
oser so ;)
<head>
<script type="text/javascript">
<!--
function ShowInput(i)
{
if (i==1)
{
var el1 = document.getElementById("1");
var el2 = document.getElementById("2");
el1.style.display = "none";
el2.style.display = "block";
}
else
{
var el1 = document.getElementById("1");
var el2 = document.getElementById("2");
el2.style.display = "none";
el1.style.display = "block";
}
}
//-->
</script>
</head>
<body>
<select name="me" size="1" class="searchField" onchange="ShowInput(this.value)">
<option value="1" >€/h</option>
<option value="2" >€/km</option>
</select>
<input id="1" type="text" name="prokm" maxlength="50" style="display:block">
<input id="2" type="text" name="prostd" maxlength="50" style="display:none">
</body>Antwort 7 von Fassy91
@teerbaby : Du hast vergessen das es nur ein Value geben darf also musst du die Values der Inputs leeren.
Antwort 8 von katy
Hallo stefanie79,
Teerbabys Variante entspricht so ca dem von mir vorgeschlagenen.
Ein Problem, das ich vorhin vergaß ist: Ohne JavaScript ist dein Auswahlfeld sinnlos. Das dürfte also nur sichtbar werden, wenn JavaScript aktiviert ist.
Eigentlich wird das ganze dadurch langsam zu kompliziert. Ich würde einfach 2 Inputfelder anzeigen lassen und serverseitig prüfen, in welchem etwas steht. Mit PHP prüfen musst du ja ohnehin, da JavaScript viel zu unzuverlässig ist, als dass du damit Daten prüfen könntest.
katy
Teerbabys Variante entspricht so ca dem von mir vorgeschlagenen.
Ein Problem, das ich vorhin vergaß ist: Ohne JavaScript ist dein Auswahlfeld sinnlos. Das dürfte also nur sichtbar werden, wenn JavaScript aktiviert ist.
Eigentlich wird das ganze dadurch langsam zu kompliziert. Ich würde einfach 2 Inputfelder anzeigen lassen und serverseitig prüfen, in welchem etwas steht. Mit PHP prüfen musst du ja ohnehin, da JavaScript viel zu unzuverlässig ist, als dass du damit Daten prüfen könntest.
katy
Antwort 9 von Fassy91
wie waäre es damit das man einen input macht und den namen ändert ?
also so :
Dürfte gehen oder ?
also so :
<input type="text" name="prostd" maxlength="50" id="feld">
<select size="1" onChange="document.getElementById('feld').name = this.value;">
<option value="prostd">Pro Stunde</option>
<option value="prokm">Pro Kilometer</option>
</select>
Dürfte gehen oder ?
Antwort 10 von Fassy91
mit Firebug (Firefox) getestet es geht zu 100 %. Kann aber manipuliert werden. Auf jedenfall prüfen mit PHP bevor du damit was machst.
Antwort 11 von katy
Hallo Fassy91,
von Attribut-Manipulationen an input-Feldern rate ich nach wie vor ab, da der Internet-Explorer damit gelegentlich Probleme hat.
katy
von Attribut-Manipulationen an input-Feldern rate ich nach wie vor ab, da der Internet-Explorer damit gelegentlich Probleme hat.
katy
Antwort 12 von Fassy91
ja aber internet explorer 7 unterstützt das komplett
Antwort 13 von katy
Hallo Fassy91,
dass ein IE mitmacht sagt nichts über die anderen.
Aber ich halte den Ansatz sowieso für zu kompliziert, siehe Antwort 8.
katy
dass ein IE mitmacht sagt nichts über die anderen.
Aber ich halte den Ansatz sowieso für zu kompliziert, siehe Antwort 8.
katy
Antwort 14 von Stefanie79
Danke Euch allen für Eure Hilfe..

