3 Stimmen

Wie rufe ich eine Javascript-Funktion für die Eigenschaft "checked" der Optionsschaltfläche auf?

Ich habe N Gruppen von Optionsfeldern auf der Seite mit automatisch generierten Namen.

Ich möchte eine Javascript-Funktion als Wert der geprüften Eigenschaft aufrufen. DIESE ZEILE NACH DER BEARBEITUNG AUSGESCHLOSSEN (Je nach Rückgabewert muss das Optionsfeld aktiviert oder deaktiviert werden).

<input type="radio" name="auto_generated_name" value="some_value" checked="test_check(args);" />

und die Javascript-Funktion lautet

function test_check(params) {
    if(conditions){
        return true;
    }
    else 
        return false;    
}

Aber das funktioniert nicht. Welchen Wert ich auch immer der Eigenschaft "checked" zuweise, sei es eine Javascript-Funktion oder ein String usw., die Optionsschaltfläche wird aktiviert.

Wie kann ich mein Ziel erreichen?

EDIT:

 <input type="radio" name="auto_generated_name" value="somevalue" onclick="test_check(args)"/>

4 Radiobuttons bilden eine Gruppe. Solche N Radiogruppen haben HTML-Klassennamen wie folgt: button_group_1, button_group_2, button_group_3, button_group_4 usw.

Die "args" müssen die Namen dieser Klassen (d. h. der Optionsschaltflächengruppen) und die entsprechenden Werte (von value="1", value="2", value="3" und value="4" ) sein.

Die Cookies mit den Klassennamen und -werten werden innerhalb der Javascript-Funktion erstellt.

Beim Aktualisieren der Seite werden die Cookies, die mit den Klassennamen übereinstimmen, überprüft und je nach Vorhandensein der entsprechenden Cookies wird die Optionsschaltfläche aktiviert oder deaktiviert.

Wie man die Ziele erreicht/

1voto

pradeek Punkte 20665

Angenommen, Sie verwenden jQuery, verwenden Sie das Änderungsereignis: http://api.jquery.com/change/

0voto

thecodeparadox Punkte 84579

Versuchen Sie dies: Hier benutze ich ein benutzerdefiniertes Attribut zu input namens groupname . In OPs Fall groupname="<?php echo $radio_button_group_name; ?>" . Nach der Überprüfung des Wertes dieses Attributs kann OP checked Attributwert.

<input type="radio" name="r1" groupname="gr1"/>
<input type="radio" name="r2" groupname="gr2"/>

$('input:radio').each(function() {
    if ($(this).attr('groupname') == 'gr1') {
        $(this).attr('checked', true);
    } else {
        $(this).attr('checked', false);
    }
});

0voto

Rory McCrossan Punkte 318758

En checked Attribut ist einfach ein boolescher Wert, der angibt, ob das Optionsfeld aktiviert werden soll, es darf kein Skript enthalten, oder ein Verweis auf eine Skriptfunktion. Jeder Wert des Attributs bewirkt, dass das Optionsfeld aktiviert wird.

Ohne zu wissen, welchen Mechanismus Sie verwenden, um die einzelnen Optionsfelder zu überprüfen, kann ich mir eine args Variable, wissen aber nicht, um welchen Typ es sich handelt - es wird schwierig, einen Code für Sie zu schreiben.

Wenn Sie es schaffen args in ein Array von Werten umwandeln, dann sollte etwas in der Art des Folgenden für Sie funktionieren:

var args = new Array(true,false,true)

$.each(args, function(index, value) {
    $("INPUT[type=radio]").eq(index).attr("checked", value)
});

Hier ist eine Fiedel um zu verdeutlichen, was ich meine

0voto

erimerturk Punkte 4150

Prüfen Sie diese Ausgabe, gültige Args ist 'aa'.

http://jsfiddle.net/X7rcC/1

html:

<input type="radio" name="auto_generated_name" value="some_value1" checked="bb" />

js:

$(function() {
    var radios = $("input[type='radio']");
    $.each(radios, function(index, value){
        var args = value.attributes[1].nodeValue;
       test_check(args, value);
    })

});

function test_check(params, value){

    if(params == "aa"){
     $(value).attr("checked",true);
    }else
     $(value).attr("checked",false);

}

0voto

Tessmore Punkte 1024

Sie können nicht mit einem checked Attribut auf diese Weise, denn alles, was als Wert angegeben wird, ist dasselbe wie checked=true Auch nur checked prüft eine Optionsschaltfläche. Sie sollten ein benutzerdefiniertes Attribut verwenden, mit dem das Attribut "checked" erstellt wird:

<input type="radio" name="auto_generated_name" value="some_value" needs_check="param">

<script>
  // Do test_check on param for each input
  $('input:radio').each(function()
  {
    var radio = $(this);
    var param = radio.attr('needs_check');

    var condition = test_check(param);

    radio.attr('checked', condition);    
  });

  function test_check(param)
  {
    return true or false based on param
  }
</script>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X