konto usunięte

Temat: Wykonanie akcji zależne od radia

Witam
Mam taki problem. Chcę aby wykonanie danej akcji było zależne od kontrolki radio (wartości 0, 1)
Kawałek kodu:


if($('input[name=abc]:checked').val() == 0) {
$("#def[type=text]").keyup(function() {
//coś tam
});
});


Kod odczytuje tylko początkową wartość radia, ignoruje jego zmianę. Chciałbym aby akcja keyup dla def była wykonywana tylko gdy radio ma wartość 0.

konto usunięte

Temat: Wykonanie akcji zależne od radia

Jak wygląda część HTML? Ogólnie listener zmian to funkcja change:

http://api.jquery.com/change/

konto usunięte

Temat: Wykonanie akcji zależne od radia

Kod html jest prawidłowy ponieważ przykład działa, problem w tym że działa tam gdzie nie powinien :-) Skrypt wywołany jest za formularzami w body przez:


$(function(){ });


Nie chcę używać change ponieważ zabiera mi to możliwość wykonywania tej akcji od razu po załadowaniu strony gdy radio ma wartość 0.

konto usunięte

Temat: Wykonanie akcji zależne od radia

Jarosław Majcher:
Kod html jest prawidłowy ponieważ przykład działa, problem w tym że działa tam gdzie nie powinien :-) Skrypt wywołany jest za formularzami w body przez:


$(function(){ });


Nie chcę używać change ponieważ zabiera mi to możliwość wykonywania tej akcji od razu po załadowaniu strony gdy radio ma wartość 0.

Chcesz wykrywać zmianę bez używania listenera do wykrywania zmian? :)
Nie wiem czy to jest to, co chcesz osiągnąć ale ja bym zrobil tak:


$( function () {

$( "input[name=abc]" ).change(function () {
var def = $( "#def[type=text]" );
if ( $( this ).val() == 0 ) {
def.keyup( function () {
//cos
} );
}
else {
def.unbind( "keyup" );
}
} ).change();

} );


change( function() ) ... przypisuje funkcje dla kazdej zmiany elementu, a change() triggeruje (jednorazowo), wiec bedzie wywolanie przy pierwszym uruchomieniuKamil Szokaluk edytował(a) ten post dnia 31.01.13 o godzinie 16:01

konto usunięte

Temat: Wykonanie akcji zależne od radia

Bardzo dziękuję. Sprawdzę trochę później i dam znać.

konto usunięte

Temat: Wykonanie akcji zależne od radia

Kamil Szokaluk:

Chcesz wykrywać zmianę bez używania listenera do wykrywania zmian? :)
Nie wiem czy to jest to, co chcesz osiągnąć ale ja bym zrobil tak:


$( function () {

$( "input[name=abc]" ).change(function () {
var def = $( "#def[type=text]" );
if ( $( this ).val() == 0 ) {
def.keyup( function () {
//cos
} );
}
else {
def.unbind( "keyup" );
}
} ).change();

} );


change( function() ) ... przypisuje funkcje dla kazdej zmiany elementu, a change() triggeruje (jednorazowo), wiec bedzie wywolanie przy pierwszym uruchomieniu


Jeszcze raz dziękuję za przykład. Wszystko jest ok dopóki #def jest polem tekstowym.
Gdy jest radio i zaznaczone jest radio o wartości 0 to wygląda to nie działa tak jak powinno. Trzeba wybrać tak, później nie aby zaczęło działać tak jak chce. Głównie chodzi mi teraz o to aby kod uruchamiał się przy załadowaniu strony bez jego powielania.

Żywy kod tutaj: http://jsfiddle.net/DhwPD/6/

konto usunięte

Temat: Wykonanie akcji zależne od radia

spróbój tego:

var form = {
keyIsOn: true,
init: function(){
this.appendText();
this.changeTrigger();
},
getRadio: function(){
return $('input[name=taknie]');
},
getSource: function(){
return $('input[name=z]');
},

appendText: function(){
if( this.keyIsOn == true ){
$('input[name=d]').val( form.getSource().val() ).prop('disabled',true);
}
else{
$('input[name=d]').val('').prop('disabled',false);
}
},
changeTrigger: function(){
var t = this;
$(this.getRadio()).on('change',function(){
if( $(this).val() == "0" ){
t.keyIsOn = true;
}
else
t.keyIsOn = false;
t.appendText();
});

$(this.getSource()).on('keyup',function(){
if( t.keyIsOn == true ){
t.appendText();
}
})


}


}

$(function(){
form.init();
})


link do jsfiddle: http://jsfiddle.net/DhwPD/24/

konto usunięte

Temat: Wykonanie akcji zależne od radia

Jarosław Majcher:
Kamil Szokaluk:

Chcesz wykrywać zmianę bez używania listenera do wykrywania zmian? :)
Nie wiem czy to jest to, co chcesz osiągnąć ale ja bym zrobil tak:


$( function () {

$( "input[name=abc]" ).change(function () {
var def = $( "#def[type=text]" );
if ( $( this ).val() == 0 ) {
def.keyup( function () {
//cos
} );
}
else {
def.unbind( "keyup" );
}
} ).change();

} );


change( function() ) ... przypisuje funkcje dla kazdej zmiany elementu, a change() triggeruje (jednorazowo), wiec bedzie wywolanie przy pierwszym uruchomieniu


Jeszcze raz dziękuję za przykład. Wszystko jest ok dopóki #def jest polem tekstowym.
Gdy jest radio i zaznaczone jest radio o wartości 0 to wygląda to nie działa tak jak powinno. Trzeba wybrać tak, później nie aby zaczęło działać tak jak chce. Głównie chodzi mi teraz o to aby kod uruchamiał się przy załadowaniu strony bez jego powielania.

Żywy kod tutaj: http://jsfiddle.net/DhwPD/6/

W twoim przykladzie zle uzyles funkcji change(). Porownaj jak jest u mnie, a jak jest u Ciebie. Tutaj dziala ok: http://jsfiddle.net/DhwPD/25/

konto usunięte

Temat: Wykonanie akcji zależne od radia

Kamil Szokaluk:

W twoim przykladzie zle uzyles funkcji change(). Porownaj jak jest u mnie, a jak jest u Ciebie. Tutaj dziala ok: http://jsfiddle.net/DhwPD/25/

No tak. Głupi błąd.

Działa ale gdy radio ma wartość początkową 1 to keyup nadal działa a nie powinien. Nie znam początkowej wartości tego radia. Formularz jest sprawdzany przez php i jeśli pojawia się błąd to wraca do niego z uzupełnionymi polami (owe radio jest również zaznaczone).

Piotrze, również dziękuję. Twój kod zachowuje się dokładnie tak samo. Poza tym nie za bardzo rozumiem jego działanie :-)

konto usunięte

Temat: Wykonanie akcji zależne od radia

Sprawdź teraz:
http://jsfiddle.net/DhwPD/30/

Teraz niezależnie czy będziesz miał zaznaczone tak/nie lub nic na starcie, wykonuje się okej.

Dodałem do inita:

var checkedOpt = this.getRadio().find(':checked');
if( typeof checkedOpt != 'undefined' ){
if( checkedOpt.val() == 0 ){
this.keyIsOn = true;
}
else
this.keyIsOn = false;
}

konto usunięte

Temat: Wykonanie akcji zależne od radia

Jarosław Majcher:
Kamil Szokaluk:

W twoim przykladzie zle uzyles funkcji change(). Porownaj jak jest u mnie, a jak jest u Ciebie. Tutaj dziala ok: http://jsfiddle.net/DhwPD/25/

No tak. Głupi błąd.

Działa ale gdy radio ma wartość początkową 1 to keyup nadal działa a nie powinien. Nie znam początkowej wartości tego radia. Formularz jest sprawdzany przez php i jeśli pojawia się błąd to wraca do niego z uzupełnionymi polami (owe radio jest również zaznaczone).

Piotrze, również dziękuję. Twój kod zachowuje się dokładnie tak samo. Poza tym nie za bardzo rozumiem jego działanie :-)

http://jsfiddle.net/DhwPD/31/

Ok racja zapomnialem o jednej rzeczy, przyklad wyzej dziala.

konto usunięte

Temat: Wykonanie akcji zależne od radia

Super. Dziękuję Panowie.

Obydwa skrypty działają tak jak chciałem. Muszę tylko przyjrzeć się dokładniej metodzie Piotra bo jak mówiłem nie do końca rozumiem jej działanie.

konto usunięte

Temat: Wykonanie akcji zależne od radia

.Piotr L. edytował(a) ten post dnia 01.02.13 o godzinie 21:41

Następna dyskusja:

Czas jaki kursor jest nad e...




Wyślij zaproszenie do