猿问

Unity注册表单验证

我正在制作一个具有登录/注册场景的 Unity 应用程序。在注册场景中,我有标准字段,如名字、姓氏、电子邮件、用户名、密码和密码。


我需要在注册用户之前进行错误检查,例如检查所有字段是否完整、电子邮件地址是否有效或密码是否匹配。如果其中一个或多个失败,它应该显示错误消息。


以下是用户单击“注册”按钮时的代码。所有输入字段都在工作,我可以在我的脚本中输入和读取它们中的文本。我还可以在某些检查中显示错误消息。


我的问题是,当表单加载并单击注册而不填写任何字段时,我收到错误消息,提示您必须完成所有字段。 如果我只填写名字然后单击注册,我的错误检查看起来好像通过了所有字段必须填写的测试并跳转到无效的电子邮件地址检查。我仍然应该得到所有字段必须填写错误。


如果表单已加载并且我只是使用有效的电子邮件地址填写电子邮件字段,则会发生同样的事情。没有完成其他字段。验证跳过所有其他检查,我可以注册。它似乎没有认识到所有其他字段都是空白的。


调试Register()函数显示所有输入的文本长度实际上都是0,所以应该不会通过第一次检查。但确实如此。


在输入字段上,我有占位符文本,但我认为这不是问题,因为字段上的调试显示它们在加载时 Length = 0。


// Register button clicked

public void Register ()

{

    Debug.Log("Input field lengths (returns correct lengths depending on input fields completed)" +

        "\nFirst Name Length: " + firstNameInputField.text.Length +

        "\nLast Name Length: " + lastNameInputField.text.Length +

        "\nEmail Length: " + emailInputField.text.Length +

        "\nUsername Length: " + usernameInputField.text.Length +

        "\nPassword Length: " + passwordInputField.text.Length +

        "\nPassword again Length: " + passwordAgainInputField.text.Length);


    // Input fields check

    if (firstNameInputField.text.Length     != 0 ||

        lastNameInputField.text.Length      != 0 ||

        emailInputField.text.Length         != 0 ||

        usernameInputField.text.Length      != 0 ||

        passwordInputField.text.Length      != 0 ||

        passwordAgainInputField.text.Length != 0)

    {

        // Success - All input fields completed

        // Check if password/password agian match

        if (string.Compare(passwordInputField.text, passwordAgainInputField.text) == 0)

        {

            // Success - Passwords match

            // Validate email

            if (ValidateEmail(emailInputField.text))

            {

                // Success - Email valid

                // POST details to database

                StartCoroutine(RegisterUser());

            }

         


慕慕森
浏览 198回答 1
1回答

不负相思意

在第一个输入字段中检查您正在执行 OR 操作 (||),因此如果任何一个条件为真,它将通过。您需要全部为真,因此使用 AND (&&) 而不是 OR (||)。如果您需要对两项中的任何一项进行检查,请将这两项特定检查放在附加括号中:if (condition1 && (condition1 || condition2))
随时随地看视频慕课网APP
我要回答