2015-12-09 2 views
1

ПроблемаСоздать петлю на основе Длина пользовательского ввода

Хотя текущий код предложит пользователю повторить свой вклад, если он/она поступает входной сигнал, который меньше или больше, чем 8 символов с первой попытки, то пользователь по-прежнему может ввести ошибочный код во второй попытке.

Вопрос

Как сделать петлю, которая держит на предлагая пользователю повторить, пока их ответ не будет 8 символов?

В качестве альтернативы, возможно ли сделать ввод, который имеет место только для 8 символов?

Текущий VBScript:

Call InputChecker 

Function InputChecker 
    Dim Input 
    Input = InputBox("Enter your name") 

    If Len(Input) <> 8 Then 
    Msgbox ("Input must be 8 characters") 
    Input = InputBox("Enter your name") 
    Else 
    MsgBox ("Input Success") 
    End If 
End Function 
+0

Взгляните на этот похожий вопрос: http://stackoverflow.com/questions/5109841/vbscript-data-validation-numeric-1-results-in -infinite-loop – davidmneedham

ответ

2

Там нет Максимальная длина InputBox в VBS, но попробуйте это:

Dim UserInput 
UserInput = InputChecker 
' You can reuse the accepted user input 

Function InputChecker 
    Dim Input, Length  
    Do 
     Input = Trim(InputBox("Enter your name")) ' Remove spaces at front and back 
     Length = Len(Input) 
     If Length <> 8 Then Msgbox "Input must be 8 characters" 
    Loop Until Length = 8 
    MsgBox "Input Success" 
    InputChecker = Input 
End Function 


Чтобы ловушку Отменить или X Поле ввода, проверьте, есть ли оно FALSE. См. Ниже с настройками пользовательского интерфейса и потока программ.

Dim UserInput 
UserInput = InputChecker 
' You can reuse the accepted user input 
If Length = 8 Then Wscript.Echo "User input: """ & UserInput & """" 

Function InputChecker 
    Dim Input, Length  
    Do 
     Input = InputBox("Enter your name","Enter your name (must be 8 characters)") 
     If Input = False Then Exit Do 
     Input = Trim(Input) ' Remove spaces at front and back 
     Length = Len(Input) 
     If Length <> 8 Then 
      If Msgbox("Input must be 8 characters, not " & Len(Input) & "!",5+48,"INPUT LENGTH ERROR") = 2 Then 
       Input = "" ' Reset it to empty string 
       Exit Do 
      End If 
     End If 
    Loop Until Length = 8 
    InputChecker = Input 
End Function 

Ref: MsgBox, InputBox

+0

спасибо, что это хорошо работает! Есть ли способ сделать Loop end, если пользователь нажимает кнопку «Выход» или «Отмена»? –

+0

Проверьте вторую часть решения. – PatricK

Смежные вопросы