对不起,我真的想不出更好的东西。只允许使用复选框网格的矩形选择
假设我的客户在主页上有一个方形空间,他们可以上传可放置在网格中任意数量框上的图像。
箱的图像应占据的选择看起来是这样的:
<div class="row">
<div class="grid-position">
<input type="checkbox" name="position[1]" disabled>
</div>
<div class="grid-position">
<input type="checkbox" name="position[2]" disabled>
</div>
<div class="grid-position">
<input type="checkbox" name="position[3]">
</div>
<div class="grid-position">
<input type="checkbox" name="position[4]">
</div>
</div>
<div class="row">
<div class="grid-position">
<input type="checkbox" name="position[5]">
</div>
<div class="grid-position">
<input type="checkbox" name="position[6]">
</div>
<div class="grid-position">
<input type="checkbox" name="position[7]">
</div>
<div class="grid-position">
<input type="checkbox" name="position[8]">
</div>
</div>
https://jsfiddle.net/17zt26wb/4/
然而,随着图像只能是长方形的,我想阻止他们选择是这样的:
X - X - ○ - ○
X - O - ○ - ○
var selection = {p1: true, p2: true, p3: false, p4: false, p5: true, p6: false, p7: false, p8: false};
OR:
○ - ○ - X - X
X - O - ○ - ○
var selection = {p1: false, p2: false, p3: true, p4: true, p5: true, p6: false, p7: false, p8: false};
然而,这是有效的:
X - O - O - O
○ - ○ - ○ - ○
var selection = {p1: true, p2: false, p3: false, p4: false, p5: false, p6: false, p7: false, p8: false};
OR:
Ø - X - X - X
Ø - X - X - X
var selection = {p1: false, p2: true, p3: true, p4: true, p5: false, p6: true, p7: true, p8: true};
等
我需要帮助搞清楚和算法,如果选定的复选框代表方形/矩形,将返回true/false。这可以在Javascript中完成,但它并不重要 - 我只需要开始,我将自己将其移植到我的语言。
在小提琴中,前两个复选框被禁用,因为图像已经占据了这两个块。在选择对象中的p1和p2的值始终为false。
这甚至可能吗?我可能不关心验证,但它会很好。
编辑:为了澄清,网格大小应该始终保持为4x2,但是,可以选择使用常量更改大小。
我算.... 28种...有效组合。这是一个足够小的域,您可以对有效组合进行硬编码。如果你的网格是30x30(例如)这不是一个有效的选项,你需要一个算法,但是对于这个小的域ID只是放弃和硬编码有效的。 – Jamiec
我想过那个。从技术上讲,网格大小将始终为4x2,但未来不一定不可能改变。最坏的情况下,如果没有人有更好的主意,我可能只是硬编码。 – marekpw
有一些聪明的方法可以“硬编码”它,这样您就可以轻松地在将来添加规则 - 为您解答问题 – Jamiec