2012-03-07 51 views
0

我想通過一組動態生成單選按鈕的迭代,並得到他們的標籤,但是當我試圖打印它們的值沒有出現,看到這個腳本演示爲例http://jsfiddle.net/HaBhk/20/和這裏是我的html如果生成的按鈕會遍歷一個單選按鈕組,並得到他們的標籤

<div data-role="content"> 
    <div data-role="collapsible" data-inset="true"> 
    <h1>AddVote</h1> 
    <div data-role="fieldcontain" > 
    <input type="text" name="name" id="question" value="" /><br> 
    <div data-role="controlgroup" data-type="horizontal" > 
     <label for="name"><a href="" id="AddButton" data-role="button" 
    data-icon="plus">Add</a><a href="" id="RemoveButton" data-role="button" 
    data- icon="delete">Delete</a> 

     </label> 
     <input type="text" name="option" id="option" value="" /><br> 

     </div> 

    <div data-role="fieldcontain"> 
    <form name="OptionsForm" id="InputForm" method="get"> 
    <div id="after" data-role="controlgroup"> 
    /////Generated radio buttons goes here 
    </div> 
    </form> 
    </div> 

    <a href="#approve" id="publishButton" data-role="button" 
    data-inline="true"data-transition="flip">Preview</a> 
    </div><!-- /content --> 
下面

是我的腳本得到單選按鈕值:

$('#publishButton').click(function(){ 
    var result 
var y=document.getElementById('question').value 
var form='<Question value=' + y + '/>'+'<br>' 
alert(form); 
$('input:radio').each(function() { 
    var value=$('input:radio').val() 
    '<option value='+value + '/>'+'<br>' 
    alert(result); 

    }); 

回答

2

下面是一些示例代碼,將返回相關的標籤的無線電選項。

var labels = []; 
$('input:radio').each(function(){ 
    labels.push($('label[for='+$(this).attr('id')+']').text()); 
}); 
alert(labels); 
1

試試這個:http://jsfiddle.net/HaBhk/24/

<input type="text" name="option" id="option" value="" /><br> 
<div id="AddButton" data-role="button" data-inline="true">Add</div> 
<div id="RemoveButton" data-role="button" data-inline="true">remove</div> 
<div id="publishButton" data-role="button" data-inline="true">publish</div> 
<div data-role="fieldcontain"> 
    <fieldset data-role="controlgroup"><legend>Choose an Option:</legend><br><br> 
     <div id="after"> 
     </div> 
    </fieldset> 
</div> 
<script type="text/javascript"> 
    function createRadioElement(elem, label, checked) { 
    var id = 'option1_' + label; 
    $('#after').append($('<div><input type="radio" name="option1" id="'+id+ '" value="1"/><label for="' + id + '">'+label + '</label></div>')); 
} 

$('#AddButton').click(function() { 
    var x = document.getElementById('option').value; 
    createRadioElement(this, $('#option').val()); 
}); 
$('#RemoveButton').click(function() { 
    $('#after').children().children("input[checked='checked']").parent().remove(); 
}); 

$('#publishButton').click(function() { 
    var result; 
    $('#after input:radio').each(function() { // only radio buttons in #after 
     var value = $(this).next('label').html(); 
     alert(value); 
    }); 
}); 
</script> 
+1

對於知識的緣故,它可能已被使用'$( '輸入:收音機+標籤')來完成。each'並直接'$(本)的.text()' – 2012-03-07 16:59:29

+0

哦,複製/將你的特定代碼粘貼到你的答案中,這確實比只有一個鏈接更好 – 2012-03-07 17:03:04

+0

發佈你自己的答案真的更好。我想我比你更有幫助。 – user1242756 2012-03-07 17:08:20

1
$('#publish').click(function() { 
    var labs = $(':radio + label'), 
     alertString =[]; 
    for (var i = 0, labLen = labs.length; i < labLen; i += 1) { 
     alertString[i] = labs[i].id;      
    }; 
    alert(alertString.join("\n"));    
});