当我按4,5,6 seriatim时,其文字654导致该行始终停留在同一位置。我正在使用Java和Wicket。
这部分在java类中:
koordinasyonId.add(new OnChangeAjaxBehavior() {
private static final long serialVersionUID = 3097782061837606985L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if(koordinasyonId.getModelObject()!=null){
String koordinasyonIdValue = koordinasyonId.getModelObject();
String kordinasyonValue ="";
for(int i=0;i<koordinasyonIdValue.length();i++) {
String regex = "^[0-9]{1,2}([,.][0-9]{1,2})?$";
if (Pattern.matches(regex,koordinasyonIdValue.charAt(i)+"")) {
kordinasyonValue = kordinasyonValue + koordinasyonIdValue.charAt(i);
}else if(".".equals(koordinasyonIdValue.charAt(i)+"") || ",".equals(koordinasyonIdValue.charAt(i)+"")){
kordinasyonValue = kordinasyonValue + koordinasyonIdValue.charAt(i);
}
}
koordinasyonId.setModelObject(kordinasyonValue);
target.add(koordinasyonId);
}
}
});
这部分在html文件中:(实际上javascript可以添加到代码中。因此我在这部分中使用了)
<script type="text/javascript">
$("#koordinasyonId").change(function(){
let koordinasyonId = document.getElementById("koordinasyonId").value;
let kordinasyonValue;
if(koordinasyonId !=null){
for(var i=0;i<koordinasyonId.length;i++) {
if (!isNaN(koordinasyonId.charAt(i))) {
kordinasyonValue +=koordinasyonId.charAt(i);
} else {
if (koordinasyonId.charAt(i).match(".") ||koordinasyonId.charAt(i).match(",") ) {
kordinasyonValue +=koordinasyonId.charAt(i);
}
}
}
}
document.getElementById("koordinasyonId").value=koordinasyonValue;
});
</script>
最佳答案
在没有任何验证程序的OnChangeAjaxBehavior
上使用TextField
并通过onUpdate
方法中的Ajax更新TextField将导致该行为。OnChangeAjaxBehavior
上的TextField
的工作方式如下:
用户在TextField中输入内容后,Behavior将使用该输入向服务器发出Ajax请求,并要求其验证该输入。
如果有效,则将调用onUpdate
方法,否则将调用onError
方法。
因此,在您的情况下,这将导致以下情况:
您在TextField中键入4
Wicket将执行Ajax请求并验证4是否为有效输入
由于它是有效输入,它将调用您的onUpdate方法
在onUpdate方法中,您告诉wicket在Input / TextField上执行Ajax刷新
因此,Ajax更新将Input / TextField内部的光标重置到第一个位置
解决方案很可能是OnChangeAjaxBehavior
不是您尝试执行的任何操作的正确方法。 OnChangeAjaxBehavior
对于具有严格验证的TextField很有用,例如IBAN的输入,因为有效输入的长度是固定的,因此您可以确定用户确定输入的时刻。
如果您能告诉我们您要在此处归档的确切内容,我们可能会为您指明如何使用检票口归档的正确方向:
您是否要验证输入?
您是否要阻止用户在输入/文本字段内输入某些值?