我有一个包含两个输入文本框的表单,一个名为serial
,另一个名为warrantyClaimId
。规则是如果warrantyClaimId也为空,则serial可以为空仅,如果warrantyClaimId 不为空,则其数据必须与数据库中的序列数据相关联。也就是说,如果有保修索赔号,则必须有相应的验证序列号。但如果没有保修索赔,任何序列都可以。
我在两个输入上都有onchange
:
<input id="serial" type="textbox" onchange="checkSerial(this.value);" />
<input id="warrantyClaimId" type="textbox" onchange="checkClaim(this.value);" />
在checkSerial中,如果serial为空并且certClaimId不是,我告诉用户规则,然后将焦点放在串行输入上。
在checkClaim中,如果serial为空且不提供warrantyClaimId,我会告诉用户规则,然后将重点放在warrantyClaimId输入上。
这会导致一些陷入困境的用户体验。假设用户输入了两个输入的合法值。然后他们决定没有保修索赔,所以他们再次点击串口输入并删除了值。他们被困,除非他们能记住保修条款中带有值的序列号。
我即将实现更改以捕获串行字段的预编辑值,以便我可以在惩罚用户后恢复该值。但我想我会问是否有人有更聪明的解决方案。
任何输入都表示赞赏。谢谢!
答案 0 :(得分:0)
我会在更改时警告关系,但在提交时更加强大(当然,在服务器上进行真正的验证)。
答案 1 :(得分:0)
我不愿意假设这是最好的方法。但是,我已经将第一个目标作为第二个目标。这样,他们是相关的。
换句话说,这样做。
<input id="serial" type="textbox" onchange="checkSerial(this.value);" />
<input id="warrantyClaimId" target="serial" type="textbox" onchange="checkClaim(this.value);" />
第二个目标是第一个的目标。它们本质上是相关的。从那里我可以从一个看到另一个。
希望这有帮助!