You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.4 KiB
105 lines
3.4 KiB
using UnityEngine; |
|
using System.Collections; |
|
using System; |
|
|
|
namespace TMPro |
|
{ |
|
/// <summary> |
|
/// Example of a Custom Character Input Validator to only allow phone number in the (800) 555-1212 format. |
|
/// </summary> |
|
[Serializable] |
|
//[CreateAssetMenu(fileName = "InputValidator - Phone Numbers.asset", menuName = "TextMeshPro/Input Validators/Phone Numbers")] |
|
public class TMP_PhoneNumberValidator : TMP_InputValidator |
|
{ |
|
// Custom text input validation function |
|
public override char Validate(ref string text, ref int pos, char ch) |
|
{ |
|
Debug.Log("Trying to validate..."); |
|
|
|
// Return unless the character is a valid digit |
|
if (ch < '0' && ch > '9') return (char)0; |
|
|
|
int length = text.Length; |
|
|
|
// Enforce Phone Number format for every character input. |
|
for (int i = 0; i < length + 1; i++) |
|
{ |
|
switch (i) |
|
{ |
|
case 0: |
|
if (i == length) |
|
text = "(" + ch; |
|
pos = 2; |
|
break; |
|
case 1: |
|
if (i == length) |
|
text += ch; |
|
pos = 2; |
|
break; |
|
case 2: |
|
if (i == length) |
|
text += ch; |
|
pos = 3; |
|
break; |
|
case 3: |
|
if (i == length) |
|
text += ch + ") "; |
|
pos = 6; |
|
break; |
|
case 4: |
|
if (i == length) |
|
text += ") " + ch; |
|
pos = 7; |
|
break; |
|
case 5: |
|
if (i == length) |
|
text += " " + ch; |
|
pos = 7; |
|
break; |
|
case 6: |
|
if (i == length) |
|
text += ch; |
|
pos = 7; |
|
break; |
|
case 7: |
|
if (i == length) |
|
text += ch; |
|
pos = 8; |
|
break; |
|
case 8: |
|
if (i == length) |
|
text += ch + "-"; |
|
pos = 10; |
|
break; |
|
case 9: |
|
if (i == length) |
|
text += "-" + ch; |
|
pos = 11; |
|
break; |
|
case 10: |
|
if (i == length) |
|
text += ch; |
|
pos = 11; |
|
break; |
|
case 11: |
|
if (i == length) |
|
text += ch; |
|
pos = 12; |
|
break; |
|
case 12: |
|
if (i == length) |
|
text += ch; |
|
pos = 13; |
|
break; |
|
case 13: |
|
if (i == length) |
|
text += ch; |
|
pos = 14; |
|
break; |
|
} |
|
} |
|
|
|
return ch; |
|
} |
|
} |
|
}
|
|
|