Javascript 如何禁用wicket设置在某些情况下是必需的
我对维克特是个新手,刚刚遇到过他 我有5个文本字段Javascript 如何禁用wicket设置在某些情况下是必需的,javascript,java,html,user-interface,wicket,Javascript,Java,Html,User Interface,Wicket,我对维克特是个新手,刚刚遇到过他 我有5个文本字段 final TextField<String> mfnField = new TextField<>("mfn", model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getMfn())); form.add(mfnField); mfnField.setOutputMark
final TextField<String> mfnField = new TextField<>("mfn",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getMfn()));
form.add(mfnField);
mfnField.setOutputMarkupId(true);
form.add(new FdsInfoButton("mfn.infoButton", new ResourceModel("mfn.infoButton")));
form.add(new FormComponentFeedbackPanel("mfnFeedbackPanel", mfnField));
final TextField<String> pbField = new TextField<>("pid",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getPBId()));
form.add(pbField);
pbField.setOutputMarkupId(true);
form.add(new FormComponentFeedbackPanel("pidFeedbackPanel", pbField));
final TextField<String> gpidField = new TextField<>("gpid",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getGpid()));
form.add(gpidField);
gpidField.setOutputMarkupId(true);
form.add(new FormComponentFeedbackPanel("gpidFeedbackPanel", gpidField));
final TextField<String> tidField = new TextField<>("tid",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getTransaction_id()));
form.add(tidField);
form.add(new FdsInfoButton("tid.infoButton", new ResourceModel("tid.infoButton")));
form.add(new FormComponentFeedbackPanel("tidFeedbackPanel", tidField));
final TextField<String> ibanField = new TextField<>("iban",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getIban()));
form.add(ibanField);
ibanField.setOutputMarkupId(true);
form.add(new FormComponentFeedbackPanel("ibanFeedbackPanel", ibanField));
在5个文本字段中:
如果在前四个字段中输入了任何内容,那么我需要同时输入fromfield和tofield,因此对于此设置,Required应该为true
但是,如果在tidField中输入了任何内容,不管其他文本字段是空的还是满的,那么对于frominput和toinput,setRequired应该为false。
我的问题是如何设置正确和错误
或者除了setRequired之外,还有什么我可以使用的吗?我找到了解决方案:
我必须使用isRequired而不是setRequired
final DateTimePicker fromInput = new DateTimePicker("from",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getFromDate()),
DateTimePicker.START_OF_DAY) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean isRequired() {
return Strings.isBlank(tidField.getConvertedInput());
}
};
form.add(fromInput);
form.add(new FormComponentFeedbackPanel("fromFeedbackPanel", fromInput));
final DateTimePicker toInput = new DateTimePicker("to",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getToDate()),
DateTimePicker.END_OF_DAY) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean isRequired() {
return Strings.isBlank(tidField.getConvertedInput());
}
};
form.add(toInput);
我只是想改进它的格式,或者帮助人们理解你的问题,并帮助你得到一个合适的答案。但您仍然需要添加进一步的信息才能解决您的问题。在我们有机会回答您之前,您的问题已经结束。看一看IFormValidator类。您需要实现它并将a、b、c、d和e列为依赖项,然后将其添加到表单:myForm.addnew MyFormValidator。这样,您将拥有所有依赖项的值,您可以决定是通过验证还是失败。@martin-g我也尝试过在IFormValidator中进行验证,但每次都会有奇怪的反应,有时会显示错误消息,有时则不会。
final DateTimePicker fromInput = new DateTimePicker("from",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getFromDate()),
DateTimePicker.START_OF_DAY) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean isRequired() {
return Strings.isBlank(tidField.getConvertedInput());
}
};
form.add(fromInput);
form.add(new FormComponentFeedbackPanel("fromFeedbackPanel", fromInput));
final DateTimePicker toInput = new DateTimePicker("to",
model(criteriaModel, on(RechercheServiceFunctionCriteria.class).getToDate()),
DateTimePicker.END_OF_DAY) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean isRequired() {
return Strings.isBlank(tidField.getConvertedInput());
}
};
form.add(toInput);