Обязательные поля в React-Native - PullRequest
2 голосов
/ 12 июня 2019

Я проверяю некоторые пользовательские вводимые значения, если они пустые, и если да, то я перебираю их заголовки (textinput title) и проверяю, содержат ли они '*'. Если они это сделают, я отображаю сообщение для пользователя. Тем не менее, мой подход не работает по некоторым причинам. Это просто продолжается дальше, даже если пользователь не заполняет обязательные поля. Что я тут не так делаю?

for (i = 0; i < this.myInputFields.myTextFields.length; i++) {
            data[this.myInputFields.myTextFields[i].key] = this.myInputFields.myTextFields[i].inputValues; //there is a bug here, if user doesnt fill the first textinput it will fail to send

            if (this.myInputFields.myTextFields[i].inputValues === '') {
                if (this.myInputFields.myTextFields[i].title.every('*')) {
                    return Alert.alert('Please fill out the required fields!')
                }
            }
        }

Если пользователь не вводит данные в первом TextInput, это приводит к сбою операции и отображает ошибку, в которой говорится, что «this.myInputFields.myTextFields[i].key» не определено. Очевидно, что он терпит неудачу, потому что он находит массив пустым и фактически ожидает, что там будет значение. Но как я могу заставить его продолжаться, даже если он пуст?

1 Ответ

1 голос
/ 18 июня 2019

Вы сравниваете значение this.myInputFields.myTextFields[i].inputValues с '' явно. Это не удастся, если inputValues - это что-то отличное от ''. (undefined например)

...
if (this.myInputFields.myTextFields[i].inputValues === '')
...

вместо этого просто проверьте на ложность:

...
if (!this.myInputFields.myTextFields[i].inputValues)
...
...