复选框组计算值

时间:2015-08-06 10:34:06

标签: javascript jquery html checkbox

我有几个复选框组,每组包含3个复选框(1,X,2)。 我想为每个组分配100%的值(组中每个复选框的33%)。该值将根据检查的复选框的数量而移动。如果检查了所有3个,那么它们将各自具有33%,但是如果检查了两个,则每个将具有50%并且如果仅检查一个,那么那个将拥有100%。 到目前为止,我只能详细说明复选框的长度,而不是值。我用Javascript并不是那么好,因此我没有找到任何好的方法来做到这一点。我有一个带有硬编码值的JSFIDDLE:

JSFIDDLE

<td>
  <input type="checkbox" name="1_1" class="checkbox" checked id="11" value="on" >
  <label for="11">1</label>
  <span id="Result"></span>
</td>
<td>
  <input type="checkbox" name="1_X" class="checkbox"checked id="1X" value="on">
  <label for="1X">X</label>
  <span>33%</span>
 </td>
 <td>
  <input type="checkbox" name="1_2" class="checkbox" checked id="12" value="on">
  <label for="12">2</label>
  <span>33%</span>
</td>

window.onload = function () {
var input = document.querySelector('input[type=checkbox]');

  function check() {
    var p = input.checked ? "100" : "0";
    document.getElementById('result').innerHTML = p+'%';
  }
input.onchange = check;
check();
}

2 个答案:

答案 0 :(得分:4)

为了解决您的问题,我使用Jquery并将复选框添加到复选框并计算计数输入。

@Override
public boolean dispatchKeyEvent(KeyEvent KEvent) 
{
    int keyaction = KEvent.getAction();

    if(keyaction == KeyEvent.ACTION_DOWN)
    {
        int keycode = KEvent.getKeyCode();
        int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() );
        char character = (char) keyunicode;

        System.out.println("DEBUG MESSAGE KEY=" + character + " KEYCODE=" +  keycode);
    }


    return super.dispatchKeyEvent(KEvent);
}

链接JsFiddle:https://jsfiddle.net/xc8xt682/3/

答案 1 :(得分:2)

没有jquery,它只是更加冗长。 :) LTastys的答案可能更好,但只是在我回答的时候加入我的。

var cells = Array.prototype.slice.call(document.querySelectorAll('td')),
    calculate = function () {
        var value = ['100%', '50%', '33%'][cells.filter(function (cell) {
                return cell.querySelector('input').checked;
            }).length - 1];
        cells.forEach(function (cell) {
            var span =  cell.querySelector('span');
            if (cell.querySelector('input').checked) span.textContent = value;
            else span.textContent = '0%';
        });
    };
cells.forEach(function (cell) {
    cell.querySelector('input').addEventListener('click', calculate);
});