2016-09-19 7 views
0

Ich habe mehrere Sätze von Radio-Schaltflächen in meiner Seite. Jeder Satz hat zwei Optionen: Text eingeben oder Bild hochladen. Die Anzahl solcher Sätze wird dynamisch bestimmt und mit Jquery auf der Webseite erstellt. Jeder dieser beiden Optionsfelder befindet sich in einer Form.Jquery Radio Button erkennt Änderungen

Mein Problem ist, dass ich keine Änderung in einem dieser Optionsfelder erkennen kann. Hier ist ein Teil meiner Code, der die Radio-Buttons erstellt -.

anstypeforms[i] = $('<form style = "padding:5px; margin:5px;">').attr('id', 
        function(){ 
         return 'AnsMethod'+quest[k].questionid; 
        }).appendTo($("#AnswerDiv"+quest[i].questionid)); 

wobei $ ("# AnswerDiv" + Quest [i] .questionid ist einige <div>, die dynamisch erstellt wird Quest [i] .questionid ist ein . Nummer

die Optionsfelder wie folgt erstellt werden -

$('<input type="radio" name = "method" value = "TextMethod" checked = "checked" > Type Text </input>').appendTo(anstypeforms[i]); 
$('<input type="radio" name = "method" value = "ImageMethod" > Upload Image </input>').appendTo(anstypeforms[i]); 

Hier wird das Stück des Codes ist, die eine Veränderung in irgendeiner der Tasten zu detektieren versucht:

$(document).ready(function() { 
$("[id^='AnsMethod']").on('change', 'input[name=method]:radio', function(e) { 
    e.preventDefault(); 

.......do something...... 

}); 
}); 

Wohin gehe ich falsch?

+0

Sie haben einen Fehler in der generierten HTML-Code. Die Eingaben sehen nicht wie folgt aus: ' Text'. –

Antwort

0

Nach mehreren Versuchen bekam das Ding auf Umwegen arbeiten. Zuerst gab ich jedem Radioknopf einen eindeutigen Namen. Dann habe ich festgestellt, ob sich irgendein Radiobutton geändert hat. Dann wurde der Name des Optionsfelds identifiziert, das geändert wurde. unter Verwendung des Namens mit dem Rest des Codes fort -

$('<input type="radio" class="rbutton" value = "TextMethod" checked = "checked" > Type Text </input>').attr('name', function(){ 
              return 'method'+quest[k].questionid; 
              }).appendTo($("#AnswerDiv"+quest[i].questionid)); 
$('<input type="radio" class="rbutton" value = "ImageMethod" > Upload Image </input>').attr('name', function(){ 
              return 'method'+quest[k].questionid; 
              }).appendTo($("#AnswerDiv"+quest[i].questionid)); 

Hier ist der Identifizierungscode -

$(document).on("change", 'input[type=radio]', function(e){ 
e.preventDefault(); 
var x = $(this).attr('name').substring(6); 
var y = $(this).attr('value'); 
switch(y) { 
    case 'TextMethod': 
     ....do something.... 
     break; 
    case 'ImageMethod': 
     ....do something.... 
     break; 
    } 
});