PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
listbox
Postitaja: uusta 2011-10-31 13:26:27
kuidas teha formi nii,
et alguses on listbox, näiteks:
kategooria1
kategooria2
kategooria3

ja siis valides listboxist näiteks kategooria2 siis ilmub samal lehel allapoole
kategooria2 vastavad väljad, näiteks

hind
suurus

ja lisaks allpool on veel kontaktandmete väljad:
nimi
telefon jne.

Kuidas antud asja teha?

Ja teine asi, näiteks kui ära täita algus:
valida kategooria1, siis täidan hinna ja kontaktandmed, ja kui nüüd
kategooria ära muuta siis peaksid säilima eelnevalt täidetud kontaktandmete väljad.

Kuidas antud asja kõige lihtsam teha oleks, ilmselt midagi keerulist siin vist ei ole. Äkki keegi juhatab mõne näidisscriptini.
RE: listbox
Postitaja: uusta 2011-10-31 22:15:53
Jõudsin enda katsetustega niikaugele:

<form method="post" >
<select name='kategooria' onchange='this.form.submit()'>
<option value="1" >1</option>
<option value="2" >2</option>
</select>

<?
if($_POST['kategooria']=='1'){
echo "<form>";
echo "Tel1:<input type="text" name="telefon1" />";
echo "Tel2:<input type="text" name="telefon1" />";
echo "</form>";
}
if($_POST['kategooria']=='2'){
echo "<form>";
echo "Mob1:<input type="text" name="mob1" />";
echo "Mob2:<input type="text" name="mob2" />";
echo "</form>";

}
?>

<form>
Eesnimi:<input type="text" name="eesnimi" />
Perenimi:<input type="text" name="perenimi" />
</form>


Kas antud onchange='this.form.submit()' on mõistlik kasutada autosubmittimiseks või on mõni parem moodus?

Antud vormi puhul siis valides kategooria väärtuse 1 või 2 ilmub ilusti alamvorm aga probleem väljades eesnimi ja perenimi. Kui need ära täita ja siis kategooriat muuta kaovad ära eesnime ja perenime väärtused. Oskab keegi aidata?
RE: listbox
Postitaja: ise php 2011-10-31 22:28:48
Vale keel vale idee. Menüüpuu peaks toimima ilma lehte ümber laadimata, ehk uuri JavaScript lahendusi.
RE: listbox
Postitaja: EagerFish 2011-11-01 01:17:29
Lihtsam oleks jah kasutada javascripti selle asja lahendamiseks. Ei peaks uuesti laadima lehte jne.

RE: listbox
Postitaja: uusta 2011-11-01 11:15:45
huh, keeruline värk, aga kes keegi oskab mõnda javascripti näidete linke anda antud asja kohta?
Ja kui kasutada java scripti siis need kellel java keelatud browseris on, need ei saa siis kasutada ju.
RE: listbox
Postitaja: uusta 2011-11-01 11:24:08
hea näide mida ma saada tahaks on delfi myy portaalis kuulutuse lisamine:
http://muu.delfi.ee/ad/add.html

Seal ilmuvad vastavalt kategooriale lisaväljad, ja kui väljad täidetud siis kategooriat muutes info teistest väljadest ära ei kao.

Oleks väga tänulik kui keegi seletaks veits kuidas antud lahendus tehtud on ja mingeid exampleid oskab kätte juhatada.
RE: listbox
Postitaja: ise php 2011-11-01 12:31:20
Sinu näite põhjal.
Sa ei tohi teha väljadele eraldi forme, kui soovid neid koos saata, kõik, mis koos saadetakse peavad ka ühe form sees olema.


PHP kood:
 
<style>
#v2{display:none;}
</style>
<
script>
window.onload=function(){
var 
oldVal="v1";
var 
sel=document.getElementById('sel');
var 
v1=document.getElementById('v1');
var 
v2=document.getElementById('v2');

sel.onchange=function(){
alert(this.value)
document.getElementById(this.value).style.display="block";
document.getElementById(oldVal).style.display="none";
oldVal=this.value;
}


}
</script>
<body>
<form action="sinuleht.php" method="post">

 <select name='kategooria' id="sel">
 <option value="v1" >1</option>
 <option value="v2" >2</option>
 </select>
<br>
<div id="v1">
Tel1:<input type="text" name="telefon1"/><br>
Tel2:<input type="text" name="telefon1" /><br>
 </div>
 
 <div id="v2">
Mob1:<input type="text" name="mob1"  /><br>
Mob2:<input type="text" name="mob2"/><br>
</div>

 Eesnimi:<input type="text" name="eesnimi" /><br>
 Perenimi:<input type="text" name="perenimi" /><br>
 </form>

RE: listbox
Postitaja: ise php 2011-11-01 12:34:34
edit: seda alert osa pole vaja sinna
RE: listbox
Postitaja: uusta 2011-11-05 15:41:05
tänud sulle 'ise php'. Sellest oli palju abi.
Aga tekkis veel üks küsimus, kui nüüd valida listboxist väärtus siis muudetakse div id-ga v1 või v2. Aga kuidas saaks juurde lisada, et lisaks sellele muudetakse ka divi id-ga x1 ja x2.
Et valides listboxist ühe väärtuse, muudetakse mitut divi korraga.
RE: listbox
Postitaja: uusta 2011-11-05 18:01:47
tglt sain selle ka tehtud.
Aga tekkis jälle probleem, kuidas antud asja lahendada checkboxiga?
Et on üks checkbox, ja kui see ära selectida siis tekib teatud väli juurde?
RE: listbox
Postitaja: uusta 2011-11-05 19:07:05
njah, üks probleem järgneb teisele, sain ka viimase asja tehtud nii
if(document.form.checkbox.checked == true){ ...

Antud asi töötab firefoxiga aga ei tööta IE-ga. Milles asi võib olla?
RE: listbox
Postitaja: ise php 2011-11-05 20:57:25
Ära kasuta sellist defineerimist
document.form.checkbox
pealegi võib ühes formis ju mitu chBOX olla, kuidas sa siis selle defineeriksid?

kui vähegi võimalik kasuta alati ID, siis ei tekki jamasid
document.getElementById("chBoxId").checked == true

PHP kood:
 
<form action="leht.php" method="post">
    <
input type="checkbox" name="tt" value="rr" checked id="fo"rr<br>

</
form>

<
script>
if(
document.getElementById('fo').checked == true){ 
alert("t")
}
</script>
RE: listbox
Postitaja: ise php 2011-11-05 21:18:57
Võid ka kõik input väljad esmalt objektiks teha ja seejärel vastavad käsud külge pookida name järgi

PHP kood:
 
<form action="leht.php" method="post">
    <
input type="checkbox" name="tt" value="esimene"rr<br>
    <
input type="checkbox" name="ee" value="teine"rr<br>

</
form>

<
script>
var 
inputid document.getElementsByTagName('input');//leiad kõik input väljad

for(i=0;i<inputid.length;i++){ //käid nad ükshaaval läbi ja teed kõigile click functsiooni
teeClick(i)
}


function 
teeClick(nr){ // click funktsiooni tegemine
inputid[nr].onclick=function(){
chNAME(inputid[nr].name);
}
}

function 
chNAME(nimi){ // vaatad, kas selle nimega inputil on checked true ja teed midagi (alert)
for(i=0;i<inputid.length;i++){
if(
inputid[i].name==nimi && inputid[i].checked==true){alert(inputid[i].value);}
}
}

</script>
RE: listbox
Postitaja: ise php 2011-11-06 10:25:57
Edit:
võiks veel kontrollida, ennem, et klik pandaks ainult sulle vajliku inputi külge, ehk kontrolid hetkel type, muidu saavad ka kõik teised lehel asuvad inputid selle külge.


PHP kood:
 
for(i=0;i<inputid.length;i++){ //käid nad ükshaaval läbi ja teed kõigile click functsiooni 
if(inputid[i].type=="checkbox"){teeClick(i);} 
}
RE: listbox
Postitaja: uusta 2011-11-06 13:07:02
tänud, kõik toimib.
RE: listbox
Postitaja: ise php 2011-11-06 13:57:02
Selle viimase funktsiooni name järgi otsimine on tegelikult mõtetu, kuna sa juba tead, millise inputiga sul tegu on ja võid selle lõpu kirjutada selliselt.

PHP kood:
 
function teeClick(nr){ // click funktsiooni tegemine 
inputid[nr].onclick=function(){ 
chNAME(nr); 



function 
chNAME(nimi){ // vaatad, kas selle nimega inputil on checked true ja teed midagi (alert) 
if( inputid[nimi].checked==true){alert(inputid[nimi].value);} 


Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0989310741425