Autorius Tema: .show funkcija kažkodėl neveikia  (Skaityta 2272 kartus)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 438
  • Karma: +11/-0
    • Žiūrėti profilį
.show funkcija kažkodėl neveikia
« Įrašytas: 2014-05-16 00:21:46 am »
Nesuprantu, kas čia negerai. Skaičiau visas tas funkcijas, na atrodo veikimas toks. Net ir šalių option'uose abu values uždedu "anglija" , kad betkada pakeitus pasirinkimą parodytų nerodomą elementą ir neveikia...

<script>
$('#salis').change(function(){
  if($(this).val() == 'anglija'){ // or this.value == 'volvo'
$( "#miestas" ).show( "slow" );
  }
});
</script>

<select id="salis" name="salis">
<option value="anglija">Anglija</option>
               <option value="anglija">Lietuva</option>
</select>

<select style='display:none;' id='miestas' name='miestas'>
while ( $query = mysql_fetch_array($qu) ) {
echo "<option value='".$query['id']."'>".$query['miestas']."</option>";
}
</select>

Neprisijungęs Lukas

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7431
  • Karma: +232/-15
    • Žiūrėti profilį
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #1 Įrašytas: 2014-05-16 07:13:23 am »
sumesk ka koda i http://jsfiddle.net/ pvz :/ sunku ziuret ka ten turi
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Gerda Photography
Serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #2 Įrašytas: 2014-05-16 08:15:31 am »
Pataisiau tavo koda:
<script>
$('#salis').change(function(){
                // Cia gali bandyti debugginti su console.log();, nes gali buti, kad programa iki to .show() metodo tiesiog nedaeina
                console.log("onChange fired");
if( $(this).val() == 'anglija' ){ // or this.value == 'volvo'
                        console.log("Match found");
$( "#miestas" ).show( "slow" );
}
});
</script>

<select id="salis" name="salis">
<option value="anglija">Anglija</option>
               <option value="anglija">Lietuva</option>
</select>

<select style='display:none;' id='miestas' name='miestas'>
<!-- php koda reikia uzdaryti sitaip <?php ?> -->
<?php
while ( 
$query mysql_fetch_array($qu) ) {
echo "<option value='" $query['id'] . "'>" $query['miestas'] . "</option>";
}
?>

</select>

Dar pasitikrink console, gal Javascript klaidu yra. Isitikink ar jQuery yra uzkrautas ir ar apskritai funkcionuoja.
jQuery patikrinimui imesk toki koda kur nors:
$(document).ready(function(){
    alert("jQuery veikia!");
});
Kitu atveju alert, net nevykdis.
Dar gali pabandyti imesti visa savo sita koda i:
$(document).ready(function(){
    // Cia dek koda, kuri nori kad ivykditu pilnai uzkrovus html dokumenta
});
Daugiau priezasciu neizvelgiu kodel gali neveikti.

Beje, konsole atsidaryti gali su F12 arba Inspect Elements ir tabas Console
« Paskutinį kartą keitė: 2014-05-16 09:08:27 am sukūrė Haris »

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 438
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #3 Įrašytas: 2014-05-16 12:37:48 pm »
jquery užkrautas yra, nes slideout'as veikia. Ten console.log tą panaudojau, tai atspausdino. O va šito net to change funkcijos neatidaro:

<script>
$('#salis').change(function(){
// Cia gali bandyti debugginti su console.log();, nes gali buti, kad programa iki to .show() metodo tiesiog nedaeina
console.log("onChange fired");
if( $(this).val() == 'anglija' ){ // or this.value == 'volvo'
console.log("Match found");
$( "#miestas" ).show( "slow" );
}
});
</script>

Tai kaip suprantu problema:

$('#salis').change(function()

Tai gal kažkaip reikia dar mažymėti tuos option, o ne tik select?

<select  id='salis' name='salis'>
<option value='anglija'>Lietuva</option><option value='anglija'>Anglija</option>
</select>
            

Manualai.lt Forumas

Ats: .show funkcija kažkodėl neveikia
« Atsakymas #3 Įrašytas: 2014-05-16 12:37:48 pm »

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 438
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #4 Įrašytas: 2014-05-16 12:46:18 pm »
Radau problemą. Šitas turėjo eiti žemiau nei html'as. O klausimas, kodėl?

Tam pačiam lape yra:

   <script type="text/javascript">
         $(document).ready(function(){ 
            $("#mygtukas").click(function(){ 
               console.log("mygtukas  fired");            
               $("#turinys").slideToggle();   
            });
         });
         </script>

ir jis parašytas aukščiau už tuos mygtukas ir turinys div'us.

O va ta .change funkcija jau turi būti ŽEMIAU, nei tie aprašyti div'ai

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #5 Įrašytas: 2014-05-17 09:25:35 am »
Nes kai ta funkcija buvo virs html'o, tai pirmiau ta funkcija uzkrove ir uzkraunant funkcija nebuvo rastas tavo nurodytas html objektas, nes html dar neuzkrautas(nuo virsaus i apacia vykdomos programos), tai reiskia, kad jQuery nerado kam duoti ta change event'a, nes kaip minejau html'as dar neuzkrautas, ir change funkcija paliko tiesiog nenaudojama.
Norint isvegti sito yra du variantai: javascripta rasyti dokumento apacioje arba tokius eventus ideti i $(document).ready(); funkcija, siuo atveju gali javascripta rasyti kur nori.


Aiskiau?

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 438
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #6 Įrašytas: 2014-05-17 10:22:34 am »
Taip, dabar jau aišku. Tai tą document ready funkciją reiks naudoti, nes nepatinka į galą viską nukelti.

Ačiū

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Ats: .show funkcija kažkodėl neveikia
« Atsakymas #7 Įrašytas: 2014-05-17 10:30:47 am »
Nenepatinka, o tiesiog reikia pirma, kad uzkrautu DOM, kad javascript galetu manipuliuoti html objectais. ta ready() funkcija tiesiog palaukia kol documentas pilnai uzkrautas ir po to tik vykdo visas funkcijas.

EDIT: netaip supratau tavo zinute paskutine :D Taip, ready() visada reikes naudoti, jeigu nori virsuje eventu funkcijas(click, change, hover....) rasyti.
« Paskutinį kartą keitė: 2014-05-20 03:00:51 am sukūrė Haris »

Manualai.lt Forumas

Ats: .show funkcija kažkodėl neveikia
« Atsakymas #7 Įrašytas: 2014-05-17 10:30:47 am »