2017-10-17 55 views
0

我試圖根據建議的答案here打開一個基於特定的一組數字輸入表單字段,它可以很好地設置一個單一的長度。如何打開基於不規則數字/數字長度的模態?

但是在我想打開用戶輸入不同長度數字的模式的情況下,我該如何解決? 舉例,一些數字是10,一些是12,一些是15數字,我必須在任何長度上打開模態。因此,如果用戶輸入10位數字,或12位數字或15位數字,那麼3種長度中的任何一種都必須激發模態。我該如何解決它?對於Ionic 2,Angular 2和Typescript都是新手。

這裏是我做了什麼:

user.ts

export class CustomerIssuesFormPage { 

    constructor(public navCtrl: NavController, 
       public navParams: NavParams, 
       private http: Http, 
       public completeTestProvider: CompleteTestProvider, 
       private _modalCtrl: ModalController) { 
    } 

    // This works but wont deal with what I need 
    raiseModal(event: any) { 
    let input: string = event.target.value; 
    if(input.length == 10){ 
     let modal = this._modalCtrl.create(CustomerDetailsPage, {customer:event}); 
     modal.present(); 
    } 
    } 
} 

user.html

<ion-card class="card-space"> 
    <ion-item> 
    <ion-label stacked >Number</ion-label> 
     <ion-input 
     type="number" 
     (keyup)="raiseModal($event)"> 
     </ion-input> 
    </ion-item> 
</ion-card> 
+0

你面對的代碼是什麼問題? –

+0

@SurajRao沒有面對我發佈的這段代碼的任何問題。它只是不是我想要的。 '如果用戶輸入10位數字,12位數字或15位數字,就能打開模式,我不知道該怎麼做。從代碼中可以看到,所有可以做的事情都只能在輸入爲10位數字時才能打開模態。 –

+0

不同的數字輸入可能會觸發不同數字長度的模態?像輸入1必須打開模態,如果12位數字,輸入2必須打開,如果10等等?或者,如果輸入中有10個,12個和15個數字,一個輸入必須打開一個不同的模式? –

回答

1

所以你的情況這是一個有點複雜,不關於編程本身,但由於UX。

如果你的用戶有一個15位數的帳號,你不想讓他/她輸入10並打開一個模態,然後它關閉模態,再輸入2個數字並再次打開,所以它再次關閉,輸入更多3.所以有幾種方法可以做到這一點:

  • 當用戶離開(失去焦點)的輸入。
  • 當它按enter

第一個你會在你的html中使用(blur)當用戶點擊遠離輸入時,你會調用一個方法來檢查賬號和打開模式。 但只是一個模糊:如果帳戶檢查是在一個API中對待它並返回組件頁來打開模式,它會更容易,並且會有更少的代碼。如果它不是來自API,只需使用if/else if/else或switch/case,因爲只會進行一些比較。

HTML

<ion-card class="card-space"> 
    <ion-item> 
    <ion-label stacked >Number</ion-label> 
     <ion-input 
     type="number" 
     (blur)="raiseModal($event)"> 
     </ion-input> 
    </ion-item> 
</ion-card> 

.TS

raiseModal(ev: any){ 
    let input: string = event.target.value; 

    if(input.length == 10){ 
    // OPEN MODAL FOR 10 DIGITS 
    } else if (input.length == 12) { 
    // OPEN MODAL FOR 12 DIGITS 
    } else if (input.length == 15) { 
    // OPEN MODAL FOR 15 DIGITS 
    } else { 
    // ERROR: INPUT LENGTH INVALID 
    }; 
} 

第二個選項是就像第一,但你必須要對你說的用戶按回車/去他的鍵盤,這樣你可以檢查帳戶信息,這樣您就可以在輸入的每個密鑰中獲得該事件。

HTML

<ion-card class="card-space"> 
    <ion-item> 
    <ion-label stacked>Input number and press 'Enter'</ion-label> 
     <ion-input 
     type="number" 
     (keyup)="raiseModal($event)"> 
     </ion-input> 
    </ion-item> 
</ion-card> 

.TS

raiseModal(ev: any){ 
    let input: string = event.target.value; 

    if(ev.keyCode == 13){ // can also be (ev.key == "Enter") 
    if(input.length == 10){ 
     // OPEN MODAL FOR 10 DIGITS 
    } else if (input.length == 12) { 
     // OPEN MODAL FOR 12 DIGITS 
    } else if (input.length == 15) { 
     // OPEN MODAL FOR 15 DIGITS 
    } else { 
     // ERROR: INPUT LENGTH INVALID 
    }; 
    }; 
} 

希望這有助於。

+0

非常感謝。這有幫助。模糊事件是我將要去的。但是我仍然面臨着一個問題,當這個領域是空的,用戶離開領域時,它仍然會激發模態。它在空時不應該發射模態。 –

+1

@AfolabiOlaoluwaAkinwumi不客氣。這就是爲什麼最後有'else'的原因,如果它不是10,12或15,它將回退到'else',並且你可以提醒或敬酒用戶需要輸入該字段。 –

+0

我不得不傳入'if(input ==「」){'condition來分解空字段,並在空的時候引發alert,並且'else {'語句提升模式。非常感謝。你是一個拯救生命的人。 –

相關問題