javascript, jquery, radio button, input

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

3

Evo, se na JSFiddlusem ti psotavil delujoco

3

se mi je zdelo, da boš ti nekaj napisal, resda :)

hvala!

edit: jquery bo res zgleda da neizogibno naštudirat

prosim, ni panike ;)

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" />
4

definitivno zveni bolj logicno in uporabno tole [:D]
ne vem kaj sem bral namesto text field

1