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