如何突出显示在Sudoku网格中具有重复值的特定单元格?

时间:2014-05-12 11:17:53

标签: jquery

我有一个包含81个单元格的数独网格,其id值来自0088,所有这些都是文本框。我编写了以下jQuery代码,该代码仅警告在当前行或当前列或当前3 * 3子网格中找到了重复值。如何仅在行和/或列和/或子网格中找到重复值的位置突出显示或闪烁特定单元格?当用户删除新插入的数字时,也应忽略突出显示的颜色或闪烁效果。提前谢谢。

$('table tr td input').on({
    "input": function () {
        var cellValue = $(this).val();
        var cellName = $(this).attr('name');
        var row = parseInt(cellName.substring(0, 1));
        var col = parseInt(cellName.substring(1, 2));
        var id;
        var value;

        for (var i = 0; i < 9; i++) {
            if (i != col) {
                id = row + "" + i;
                value = document.getElementById(id).value;
                if (value == cellValue && cellValue.length > 0) {
                    alert("Duplicate Value is Found");
                }
            }
        }

        for (var j = 0; j < 9; j++) {
            if (j != row) {
                id = j + "" + col;
                value = document.getElementById(id).value;
                if (value == cellValue && cellValue.length > 0) {
                    alert("Duplicate Value is Found");
                }
            }
        }

        var gridRow = row - (row % 3);
        var gridColumn = col - (col % 3);
        for (var r = gridRow; r < gridRow + 3; ++r) {
            for (var c = gridColumn; c < gridColumn + 3; ++c) {
                if (r != row || c != col) {
                    id = r + "" + c;
                    value = document.getElementById(id).value;
                    if (value == cellValue && cellValue.length > 0) {
                        alert("Duplicate Value is Found");
                    }
                }
            }
        }
    }
});

1 个答案:

答案 0 :(得分:0)

为了实现这一点,你可以使用jquery的css(),例如

for (var i = 0; i < 9; i++) {
                    if (i != col) {
                        id = row + "" + i;
                        value = document.getElementById(id).value;
                        if (value == cellValue && cellValue.length > 0) {
                            $('#'+id).css('background-color','red');//for example
                        } else {
                            $('#'+id).css('background-color','inherit');//for example
                          }

                    }
                }