Autor Zpráva
petrr
Profil *
Ahojky, snazim se vytvořit kód ve kterém uživatel ze 3 selectů zadává datum narození, nicméně se snažím ošetřit situaci kdy uživatel zadá datum které neexistovalo. Posílám kód:

<script type="text/javascript">

var dny_v_mesici = Array(31,28,31,30,31,30,31,31,30,31,30,31); //toto není přestupný rok

function byId(id){
  return document.getElementById ?  document.getElementById(id) : document.all[id];
}
function dnyvmesici(month) {
  // Pokud je spatne cislo v mesici
  var days = dny_v_mesici[month];
  for (i = byId('days').options.length - 1; i>=28; i--) {
    byId('days').remove(i);
  }
  for (i = 28; i <= days; i++) {
    var option = document.createElement('option');
    option.text = option.value = i;
    try      { byId('days').add(option, null); } // nebere IE
    catch(e) { byId('days').add(option); } // bere IE
  }
}
</script>



<select id="days">
<option>den:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>


<select onchange="dnyvmesici(this.selectedIndex-1)">
<option>měsíc:</option>
<option value="1">Leden</option>
<option value="2">Únor</option>
<option value="3">Březen</option>
<option value="4">Duben</option>
<option value="5">Květen</option>
<option value="6">Červen</option>
<option value="7">Červenec</option>
<option value="8">Srpen</option>
<option value="9">Září</option>
<option value="10">Říjen</option>
<option value="11">Listopad</option>
<option value="12">Prosinec</option>
</select>


<select id="rok">
<option value>rok:</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
</select>


Potřeboval by jsem pomoct s ošetřením situací španě zadaného data, ví někdo jak na to? Děkuji
_es
Profil
petrr:
Potřeboval by jsem pomoct s ošetřením situací španě zadaného data
JavaScript má vlastný časový dátový typ Date.
Pomocou jeho metód sa na tento účel dá spraviť overenie dátumu:
function platnyDatum(den, mesiac, rok) {
  var d = new Date(Date.UTC(rok, mesiac - 1, den));
  return d.getUTCFullYear() === rok && d.getUTCMonth() === mesiac - 1 && d.getUTCDate() === den;
}
petrr
Profil *
Perfektně, jakým způsobem to mám zakombinovat do tohoto scriptu? Děkuji
_es
Profil
petrr:
Perfektně, jakým způsobem to mám zakombinovat
Môžeš pomocou tej funkcie overiť, či je ten dátum platný a keď nie, tak požiadať o opravu a nastaviť nejaký najbližší platný dátum.
Pozri si udalosť onchange selectu.
petrr
Profil *
Pomůžete mi to vytvořit? děkuji
petrr
Profil *
Jde o to že javascriptu moc nerozumím - začnu tedy tak že vytvořím 3x select a formu pro javascript - co musím udělat jako první? děkuji





<script type="text/javascript">


</script>









<select id="days">
<option>den:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>


<select onchange="dnyvmesici(this.selectedIndex-1)">
<option>měsíc:</option>
<option value="1">Leden</option>
<option value="2">Únor</option>
<option value="3">Březen</option>
<option value="4">Duben</option>
<option value="5">Květen</option>
<option value="6">Červen</option>
<option value="7">Červenec</option>
<option value="8">Srpen</option>
<option value="9">Září</option>
<option value="10">Říjen</option>
<option value="11">Listopad</option>
<option value="12">Prosinec</option>
</select>


<select id="rok">
<option value>rok:</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
</select>
:
shaggy
Profil
petrr:
Pomůžete mi to vytvořit? děkuji
Samozrejme, akú finančnú odmenu za to ponúkaš?

Jde o to že javascriptu moc nerozumím
Tak by si sa ho mal najprv doučiť a potom pýtať. Ty si tu v poslednom období dostal toľko odpovedí, za ktoré by si iní vyúčtovali nemalé peniaze. Keby mňa niekto otravoval s takýmito otázkami a neprejavil by ani tú najmenšiu snahu niečo sa naučiť, tak by som si buď vypýtal dosť peňazí, alebo by som ho poslal niekam. Zamysli sa nad sebou.
_es
Profil
petrr:
co musím udělat
Funkciu dnyvmesici odstráň, každý by snáď mal vedieť, kedy sa narodil a nepotrebuje k tomu pomoc.
Všetkým trom selectom zadaj ako reakciu na udalosť onchange tú istú funkciu,
v ktorej overíš pomocou platnyDatum, či je dátum platný.
Ak nie je, zistíš cyklom pomocou platnyDatum najbližší platný dátum a nastavíš správny deň v selecte a vyzveš alertom na zadávanie platného dátumu.
Celý kód robiť nebudem.
petrr
Profil *
Dobrý den, potřeboval by jsem zjistit jakým způsobem vyzvu
alert
na zadání platného datumu?, dosltal sem tento kód t do podoby:
<script type="text/javascript">

var dny_v_mesici = Array(31,28,31,30,31,30,31,31,30,31,30,31); //toto není přestupný rok
var dny_v_mesici2 = Array(31,29,31,30,31,30,31,31,30,31,30,31);//prestupný rok

function platnyDatum(den, mesiac, rok) {
  var d = new Date(Date.UTC(rok, mesiac - 1, den));
  return d.getUTCFullYear() === rok && d.getUTCMonth() === mesiac - 1 && d.getUTCDate() === den;
}

</script>





<select id="days" onchange="platnyDatum">
<option>den:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>


<select id="mesic" onchange="onchange="platnyDatum">
<option>měsíc:</option>
<option value="1">Leden</option>
<option value="2">Únor</option>
<option value="3">Březen</option>
<option value="4">Duben</option>
<option value="5">Květen</option>
<option value="6">Červen</option>
<option value="7">Červenec</option>
<option value="8">Srpen</option>
<option value="9">Září</option>
<option value="10">Říjen</option>
<option value="11">Listopad</option>
<option value="12">Prosinec</option>
</select>


<select id="rok" onchange="platnyDatum">
<option value>rok:</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
</select>


děkuji.
_es
Profil
petrr:
<select id="days" onchange="platnyDatum">“ je zle.
Správne je:
<select id="days" onchange="nejakaFunkcia()">
alebo všeobecnejšie:
<select id="days" onchange="nejaké príkazy JS">
alebo v kóde JS:
document.getElementById("days").onchange = nejakaFunkcia;
Viď aj Rozdíl mezi voláním funkce a funkcí.
Funkcia platnyDatum vracia true pre platný dátum a false pre neplatný dátum, nič iné, teda jej priame priradenie do udalosti onchange ti je na nič. Môžeš si aj prerobiť funkciu dnyvmesici z prvého skriptu, no treba rátať s tým, že neplatný dátum sa môže zadať zmenou roka, mesiaca aj dňa. Len si pridáš overenie dátumu do tých cyklov a tú funkciu priradíš k onchange všetkých troch selectov. Stačí nad tým len trochu popremýšľať a nie tu len stále kopírovať ten istý kód s malou zmenou.
petrr
Profil *
Ahojky potřeboval by jsem poradit vytvřil jsem tento kódek - proč mi to nezapíše do
<select name="mesice" onchange="doformulare">
pole dny_v_mesici? Děkuji

<head>
<script type="text/javascript">


var dny_v_mesici = new Array;


dny_v_mesici[1]=new Option("Leden",31);

dny_v_mesici[2]=new Option("Únor",28);

dny_v_mesici[3]=new Option("Březen",31);

dny_v_mesici[4]=new Option("Duben",30);

dny_v_mesici[5]=new Option("Květen",31);

dny_v_mesici[6]=new Option("Červen",30);

dny_v_mesici[7]=new Option("Červenec",31);

dny_v_mesici[8]=new Option("Srpen",31);

dny_v_mesici[9]=new Option("Září",30);

dny_v_mesici[10]=new Option("Říjen",31);

dny_v_mesici[11]=new Option("Listopad",30);

dny_v_mesici[12]=new Option("Prosinec",31);





function zapismesice(f)

{

document.writeln("<SELECT name=\"mesice\" onchange=\"update_days(doformulare)\">");

for(x=0;x<13;x++)

document.writeln("<OPTION value=\""+dny_v_mesici[x].value+"\">"+dny_v_mesici[x].text);

selection=f.months[f.months.selectedIndex].value;

}





</script>

</head>

<body>
<h1>datum narození<h1>

<form name="doformulare">
<select id="days">
<option>den:</option>

</select>


<select name="mesice" onchange="doformulare">
<option value="0">měsíc:</option>

</select>


<select id="rok">
<option value>rok:</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
</select>

</form>

</body>
_es
Profil
petrr:
Nečítaš pozorne rady, len tu stále vkladáš množstvo kódu a čakáš, že ti to niekto celé spraví.
Ja to vzdávam.
petrr
Profil *
Ahojky proč když ve výsledku kliknu na měsíce se mi vypíše 12xundefined a né měsíce v pořadí? pokouším se to udělat takto:



<html>
<head>
<script type="text/javascript" language="javascript"> 





var mesic = new Array ;	

mesic[1] =  ("Leden",31); 
mesic[2] =  ("Únor",28);
mesic[3] =  ("Březen",31); 
mesic[4] =  ("Duben",30); 
mesic[5] =  ("Květen",31); 
mesic[6] =  ("Červen",30); 
mesic[7] =  ("Červenec",31); 
mesic[8] =  ("Srpen",31); 
mesic[9] =  ("Září",30);
mesic[10] = ("Říjen",31);
mesic[11] = ("Listopad",30);
mesic[12] = ("Prosinec",31);

document.write(mesic[1]);



function vypsat(f)

{

document.writeln("</SELECT><SELECT name=\"days\">");
document.writeln("<option value=\"0\">DEN:</option value>");
document.writeln("</SELECT>");

document.writeln("</SELECT><SELECT name=\"moths\">");
document.writeln("<option value=\"0\">MĚSÍC:</option value>");

for(x=1;x<13;x++)

document.writeln("<OPTION value=\""+mesic[x].value+"\">"+mesic[x].text);
document.writeln("</SELECT>");

document.writeln(mesic[1]);

}


</script>
</head>





<body>

</form>

<form name="FRM">

<script>vypsat(document.FRM); </script>



</form>
</body>
</html>


Děkuji
Kajman_
Profil *
zkuste se podívat do nějaké knížky o javascriptu
mesic[1] =  {"value":"Leden","text":31); 
Kajman_
Profil *
Neopravena zavírací závorka...
mesic[1] =  {"value":"Leden","text":31}; 
petrr
Profil *
Děkuji už to zapisuje měsíce jak má - teď mi dělá problém vypsat číselnou hodnotu do
<SELECT name=\"days\">")
?,
udělal jsem úpravy v onchange u
<SELECT name=\"months\"
a přidal funkci
function uprav_dny(f)
. Ve výsledku když kliknu na libovolný měsíc mi to vypíše počet dní měsíce -1. Posílám upravený kód:

<html>
<head>
<script type="text/javascript" language="javascript"> 


var mesic = new Array ;    

mesic[1] =  {"text":"Leden","value":31}; 
mesic[2] =  {"text":"Únor","value":28}; 
mesic[3] =  {"text":"Březen","value":31}; 
mesic[4] =  {"text":"Duben","value":30};
mesic[5] =  {"text":"Květen","value":31};
mesic[6] =  {"text":"Červen","value":30}; 
mesic[7] =  {"text":"Červenec","value":31};
mesic[8] =  {"text":"Srpen","value":31}; 
mesic[9] =  {"text":"Září","value":30};
mesic[10] = {"text":"Říjen","value":31};
mesic[11] = {"text":"Listopad","value":30};
mesic[12] = {"text":"Prosinec","value":31};

//document.write(mesic[1].value);
//document.write(mesic[2].value);


function vypsat(f)

{

document.writeln("<SELECT name=\"days\">");
document.writeln("<option value=\"0\">DEN:</option value>");

document.writeln("</SELECT>");

document.writeln("</SELECT><SELECT name=\"months\" onchange=\"uprav_dny(FRM)\">");
document.writeln("<option value=\"0\">MĚSÍC:</option value>");

for(x=1;x<13;x++)

document.writeln("<OPTION value=\""+mesic[x].value+"\">"+mesic[x].text);
document.writeln("</SELECT>");


}

function uprav_dny(f)
{
selection=f.months[f.months.selectedIndex].value;
for (i=1;i<selection;i++)
{

document.write(i);


}

}


</script>
</head>


<body>

</form>

<form name="FRM">

<script>

vypsat(document.FRM); </script>
</form>
</body>
</html>


Děkuji mnohokrát.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0