javascript, jquery, radio button, input
4 naročniki
4 naročniki
Imam en problem.
Na formi sta dva input (tekst) polja, katera na začetku disablam s to kodo:
<script>
jQuery(function($) {
$('#id1').attr('disabled', 'disabled');
$('#id2').attr('disabled', 'disabled');
});
</script>
Potem imam dva radio gumba, na podlagi katerega se enabla text field.
To naredim s tem:
<input type="radio" name="radioknof" onclick="id1.disabled=false"/> (enako za drugega, samo drugi id).
To zdaj deluje.
Rad bi pa, da ko preklapljaš med radio gumbi, da se text field disabla nazaj. Zdaj ostane viden tudi ko se klikne na drugi radio gumb.
Poskusil sem z onfocus, onselect pa ne dela.
Hvala za vsakršno pomoč, lp
edit: nočem da se text field skrije, zdaj sem mu v disablanem stanju dodal opacity:0.5 in v to hočem da se spremeni nazaj, ko se preklopi med radio gumbi
11 odgovorov
jQuery API si preberi za change event
prvo naredi value pr enmu radiotu, pol drugi value pr drugmu
torej html:
<input type="radio" name="radioknof" value="text1" /> <p id="text1" class="teksti">tekst 1</p>
<input type="radio" name="radioknof" value="text2" /> <p id="text2" class="teksti">tekst 1</p>
pa JS:
$('input[name=radioknof]').change(function(e){
//najprej odksrijemo oba (ali vec) tekstov
$('.teksti').removeClass('dimmed');
//potem zatemnimo tekst, katerega vrednost nosi ta radio
$('#'+$(this).val()).addClass('dimmed');
});
s tem, da v css fajlu dolocis
.dimmed{
opacity:.5;
}
tak, na hitrco sestavljeno
se bolje bi bilo, ce bi napesto Pjev uporabil Labelse
za take primere pa uporabljaj JSFiddle, pa rekreiras svoj rpoblem
se mi je zdelo, da boš ti nekaj napisal, resda :)
hvala!
edit: jquery bo res zgleda da neizogibno naštudirat
jQuery je zakon.... edini opensource projekt ki je od mene prejel ze vec donacij (no, ok, se wiki je tut)
wssrpnc:
edit: jquery bo res zgleda da neizogibno naštudirat
Res ne vem zakaj sem se našel v teh besedah :)
Živjo,
tole ni čisto rešilo mojga problema, čeravno gre v pravi smeri..
Vseeno mora ostati text field (text vnosno polje) disablan.
Po logiki bi naredil takole:
<input type="radio" name="radioknof" onclick="**id1**.disabled=**false**" onclick="**id2**.disabled=**true**"/>
in pa za drugi input kontra.. Hvala!
dizablaš lahko karkoli in nikakor ne tako inline ampak v jQuery bloku...
sam si zgoraj že napisal kako... to lahko poljubno potem kjerkoli v jqueryju spreminjaš.. lahko tudi znotraj event trigger funkcije "change", ki sem jo podal zgoraj
Če prav razumem, rabiš nekaj takšnega:
http://jsfiddle.net/VV9Fu/2/
$('input[name=radioknof]').change(function(e){
// onemogocimo vsa vnosna polja
$('.teksti').addClass('dimmed');
$('.teksti').attr('disabled', 'disabled')
// prikazemo le izbrano polje
$('#'+$(this).val()).removeClass('dimmed');
$('#'+$(this).val()).removeAttr('disabled');
});
Kot je pa rekel @Mešetar - pozabi na tisti 'onclick' event v vnosnem polju. Kar rabiš HTMLja, je le tole (za vsak input box):
<input type="radio" name="radioknof" value="text**X**" /> <input type='text' id="text**X**" class="teksti" />