如果我们在文本输入类型上使用setEnabled(false)说它会禁用而不参与表单验证,那么我怎样才能在onsubmit之前将其设为enoforce
答案 0 :(得分:4)
作为一般规则,浏览器根本不提交禁用字段的值。 (按HTML标准mandated)
重要的是要看到由于浏览器没有发送数据,问题是框架中立的。解决方案也独立于您的框架:
一个单独的Wicket特定问题是,即使浏览器提交了值,任何调用setEnabled(false)
的Wicket组件都将拒绝处理它们。所以你必须将双屏扩展到你的Wicket组件结构中,这看起来不太好。
所以它是可行的,但是您应该知道用户不期望提交禁用字段,并且您可能会通过更改表单输入的标准行为来引起混淆。您可能需要考虑重新设计UI作为替代选项。
答案 1 :(得分:1)
如果组件被禁用,则不会有任何要验证的输入。我将从现在开始假设您要执行FormValidator
,其中包含一些其他组件的用户输入和此禁用的TextField
模型对象。
除非您在FormValidator.getDependentFormComponents()
中退回已停用的TextField
,否则FormValidator
将继续执行。考虑到FormComponent.getConvertedInput()
不会返回任何内容,因为没有输入。您可以使用FormComponent.getValue()
来获取Modelobject。