2013-06-12 57 views
0

想知道我是否可以得到一些帮助。我有3个复选框,并且希望在每个复选框之前将文本显示回给用户。在页面上显示选中的复选框选项

<form id="extras" onchange="calculate()"> 
    option 1<input type="checkbox" name="box" value="2000" id="snow" onchange="calculate()" checked><br> 
    option 2<input type="checkbox" name="box" value="500" id="water" onchange="calculate()" checked><br> 
    option 3<input type="checkbox" name="box" value="150" id="air" onchange="calculate()"><br><br> 
</form> 

所以我可以说你选择了选项1和选项2,如果他们都选择。我设法通过使用innerHTML来实现这一点,但我不确定如何实现这个复选框。关于如何做到这一点的任何想法?感谢您的任何建议。

+0

安置自己的'计算()'函数? – lifetimes

+0

你是什么意思的“显示每个复选框之前的文本回给用户”? – j08691

+0

同样的问题...你是什么意思,“显示”每个复选框之前的文本? –

回答

1

HTML

<form id="extras"> 
    <label id="lbl_1">option 1</label><input type="checkbox" name="box" value="2000" id="1" onchange="calculate()"><br> 
     <label id="lbl_2">option 2</label><input id="2" type="checkbox" name="box" value="500" onchange="calculate()"><br> 
     <label id="lbl_3">option 3</label><input type="checkbox" name="box" value="150" id="3" onchange="calculate()"><br><br> 
</form> 
     <span id="txt"></span> 

计算功能

function calculate() 
    { 
     document.getElementById("txt").innerHTML = ""; 
     var checkBoxes = document.getElementsByName("box"); 
     for(var i=0; i < checkBoxes.length;i++) 
     { 
      if(checkBoxes[i].checked) 
      {   
document.getElementById("txt").innerHTML += document.getElementById("lbl_" checkBoxes[i].id).innerHTML 
      } 
     } 

    } 

而且JsFiddle

+0

啊我明白了,这很有道理。感谢回复。 – user2390604

+0

我现在有这个工作,非常感谢。只有它是显示在同一行上,我想添加一个换行符来分隔它们。不太确定如何做到这一点。帮助将不胜感激。 – user2390604

+0

将相关行更改为document.getElementById(“lbl_”checkBoxes [i] .id).innerHTML +“
”; –

0

在这里你去。我在jQuery中写了这个,但是你可以把它转换成vanilla JS。

http://jsfiddle.net/P2BfF/ 

基本上你需要为复选框创建标签:

<label for='snow'>option 1</label> 

然后根据检查,可以显示该元素的innerHTML。

这里是我的JS:

var checkboxes = $('#extras').find('input[type=checkbox]'); 

checkboxes.on('click',function() { 
    var selected = []; 
    checkboxes.each(function(idx,item) { 

     if (item.checked) 
      selected.push($('label[for="' + item.id + '"]').html()); 
    }); 

    return alert(selected); 
});   
+0

我还没有使用jquery,所以不太确定这一点。谢谢,可能会尝试翻译=] – user2390604

+0

然后使用@Gokhans'。 –