pot sa fac in asa fel in cat sa fie ora de deschidere predefinita la 9:00AM si ora de inchidere la 6:30PM si in al doilea buton select ora pe care pot sa o aleg sa fie mai mare decat ora de deschidere??
MarPloMesaje:4343
Poti sa pui o anumita optiune predefinita selectata adaugand-o direct in codul html cu atributul "selected" (vezi in exemplu dat).
Ca sa nu se poata selecta o ora de inchidere mai mica decat cea de deschidere e nevoie de un script JS care sa compare cele doua ore.
Poti aa folosesti scripul din urmatorul exemplu.
Open: <select id='s1'>
<option>07:00 am</option>
<option selected>09:00 am</option>
<option>11:00 am</option>
</select> -
Close: <select id='s2'>
<option>07:30 am</option>
<option>08:00 am</option>
<option selected>06:30 pm</option>
<option>08:00 pm</option>
</select>
<div id='err_msg'></div>
<script>
var err_msg = document.getElementById('err_msg');
var sl_s1 = document.getElementById('s1');
var sl_s2 = document.getElementById('s2');
var i_sel2 = sl_s2.selectedIndex; //index of selected option
//return a number H.m of pased hour
var hourToNr =(h)=>{
let arn=h.trim().replace(' ',':').split(':');
if(arn[2].toLowerCase()=='pm') arn[0] = arn[0]*1+12;
return (arn[0]+'.'+arn[1])*1;
}
sl_s2.addEventListener('change', (e)=>{
let s1_val = hourToNr(sl_s1.options[sl_s1.selectedIndex].text); //pass text of selected option
let s2_val = hourToNr(e.target.options[e.target.selectedIndex].text);
if(s1_val >= s2_val){
sl_s2.selectedIndex = i_sel2; //select default selected option
err_msg.innerHTML ='Invalid close hour';
}
else err_msg.innerHTML ='';
});
</script>
Demo:
Open: - Close:
dimMesaje:61
Multumesc pt raspuns
intrebarea erea daca pot sa priau datale din acel array si sa fac selectarea predefinita daca il pun asa cum ai zis tu in codul html cu atributul "selected" tinand cont ca am 7 zile din saptamana progam diferit este destul de lung codu html si ma gandeam ca il pot simlifica, in loc de:
<select name="shipping_pickup_location_open_luni{{location.location_id}}" id="input-open-luni{{location.location_id}}" class="form-control">
{% for cod,name in times %}
{% if shipping_pickup_location_open_luni[location.location_id] == cod %}
<option value="{{cod}}" selected="selected"> {{name}}</option>
{% else %}
<option value="{{cod}}" >{{name}}</option>
{% endif %}
{% endfor %}
</select>
daor ca nu stiu cum pot in cazul asta sa predefinesc "selected" sau daca este posibil.
Iar scriptul as vrea sa scata din array orele mai mica ca cea selectata in select open si sa o afiseze in select close estul orelor ramase nu sa intaorca eroare daca s-ar putea
multumesc
MarPloMesaje:4343
Nu cunosc sintaxa acelui sistem template, dar poti incerca sa inlocuiesti:
Iar partea cu scriptul JS, functioneaza cel din urmatorul cod.
Sterge automat elementele <option> din select-ul Close care au ora mai mica decat optiunea selectata predefinit la Open.