2016-09-19 144 views
0

我在页面中有多组单选按钮。每组有两个选项键入文本或上传图像。这些集合的数量是动态确定的,并使用Jquery在网页中创建。这两组单选按钮中的每一个都在一个表格内。Jquery单选按钮检测变化

我的问题是,我无法检测到任何这些单选按钮的变化。下面是创建一个单选按钮,我的代码的一部分 -

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

其中$(“#AnswerDiv” +任务[I] .questionid一些<div>这是动态创建任务[I] .questionid是。数

按钮被作为产生的无线如下 -

$('<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]); 

这里是一段代码,试图在任何按钮以检测变化:

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

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

}); 
}); 

我哪里错了?

+0

您有一个错误在你生成的HTML。输入看起来不像'文本'。 –

回答

0

经过几次试验得到的东西工作使用迂回的方式。我首先给每个单选按钮赋予一个唯一的名称。然后我检测到任何单选按钮是否有变化。然后确定已更改的单选按钮的名称。使用与代码的其余部分进行的名字 -

$('<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)); 

这里是识别码 -

$(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; 
    } 
});