统一删除输入字段中的字符
Remove characters in inputfield in unity
我在一个场景中有一个输入字段,我需要一个像 MM/YY 这样的格式,当用户输入前两个整数时 /
应该立即添加到第二个 character.So 我有添加以下代码 inputfield onvalueChanged 事件
if (ExpiryDateInputField.text.Length == 2)
{
ExpiryDateInputField.text = ExpiryDateInputField.text + "/";
ExpiryDateInputField.MoveTextEnd(false);
}
这里的问题是,当我尝试删除文本时,/
之后的文本正在删除,但 /
之前的文本没有被删除,我哪里做错了。
例如:如果我输入 1234,输入字段将显示为 12/34,当我尝试删除输入的文本时,单击键盘上的退格键时删除了输入的文本 3 和 4,但 12/
没有删除。有什么办法解决吗?
问题基本上就是这样
您输入“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;
}
我在一个场景中有一个输入字段,我需要一个像 MM/YY 这样的格式,当用户输入前两个整数时 /
应该立即添加到第二个 character.So 我有添加以下代码 inputfield onvalueChanged 事件
if (ExpiryDateInputField.text.Length == 2)
{
ExpiryDateInputField.text = ExpiryDateInputField.text + "/";
ExpiryDateInputField.MoveTextEnd(false);
}
这里的问题是,当我尝试删除文本时,/
之后的文本正在删除,但 /
之前的文本没有被删除,我哪里做错了。
例如:如果我输入 1234,输入字段将显示为 12/34,当我尝试删除输入的文本时,单击键盘上的退格键时删除了输入的文本 3 和 4,但 12/
没有删除。有什么办法解决吗?
问题基本上就是这样
您输入“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;
}