我在一个场景中有一个输入字段,我需要一个像MM / YY这样的格式,当用户输入前两个整数/
时应立即添加到第二个字符。因此,我在下面的代码中添加了输入字段onvalueChanged事件
if (ExpiryDateInputField.text.Length == 2)
{
ExpiryDateInputField.text = ExpiryDateInputField.text + "/";
ExpiryDateInputField.MoveTextEnd(false);
}
问题是,当我尝试删除文本时,/
之后的文本被删除,而/
之前的文本未被删除,这是我做错的地方。
例如:如果我输入1234,则当我尝试删除输入的文本时,输入字段将显示为12/34。3和4在单击键盘上的退格键时正在删除,而12/
却没有删除。有什么办法解决吗?
答案 0 :(得分:1)
问题基本上是这个。
您输入“ 12”,调用OnValueChange并添加“ /”,现在您拥有“ 12 /”。
您按退格键删除“ /”,调用OnValueChange并添加“ /”,现在您有了“ 12 /”。
您可以尝试记住InputField
的最后一个值,如果该值包含“ /”,则不要附加另一个“ /”。
string last = string.Empty;
public void OnValueChange()
{
if (ExpiryDateInputField.text.Length == 2 && !last.Contains("/"))
{
ExpiryDateInputField.text = ExpiryDateInputField.text + "/";
ExpiryDateInputField.MoveTextEnd(false);
}
last = ExpiryDateInputField.text;
}