我有一个数独谜题(Click Here)并且它工作正常,除了我想在填写所有空单元格后显示“检查我的答案”按钮。有没有办法做到这一点?
这是我的拼图生成功能和我的支票填写功能:
// Check if filled out
function checkFilledOut() {
// What do I do...?
// How do I check if they are all filled out...?
}
// Generate sudoku puzzle
function generatePuzzle(num) {
for(var i = 0; i < solution1.length; i++) {
for(var j = 0; j < solution1[i].length; j++) {
rowVal[i][j] = solution1[i][j];
}
}
for(var h = 1; h <= 10; h++) {
fiddle(rowVal);
}
for(var m = 0; m < 81; m++) {
document.forms[1].elements[m].style.color = 'black';
}
putCellVal();
emptyCells(num);
for(var f = 0; f < 81; f++) {
if (document.forms[1].elements[f].value != '') {
document.forms[1].elements[f].readOnly = 'readonly';
}
}
document.getElementById('CA').style.display = 'inline-block';
document.getElementById('SS').style.display = "inline-block";
document.getElementById('CP').style.display = "inline-block";
}
任何帮助将不胜感激!
JSFiddle链接:http://jsfiddle.net/oliverni/95w8z/
答案 0 :(得分:0)
最简单的方法是在更改值后检查所有数组单元格是否都填充了for循环。
有点复杂,但内存可能更少,只是通过检查框中是否有值,并且有一个值(下面的解释)然后当你达到81时,只保留一个已满的数量的计数器。运行该功能以检查解决方案。
说明: 基本上,检查最后一个值,所以你知道你是否已经有了东西,然后如果没有,现在是,++,如果它现在仍然是,没有,如果有,现在不是, - 。 要获取旧值,请参考此处:How to get old Value with onchange() event in text box
你会想要使用第二个答案,有46个赞成票。
答案 1 :(得分:0)
这是我编写的函数,它使用类型文本迭代所有输入,并使用每个空白字段递增变量。然后,如果没有空白字段,则显示按钮。
function checkFilledOut() {
numBlank = 0;
$('input[type="text"]').each(function() {
var val = $(this).val();
if(val == "" || val == 0) {
numBlank+=1;
}
});
if(numBlank == 0) {
$('#CA').show();
}
else {
$('#CA').hide();
}
}