簡體   English   中英

Appcelerator Titanium 中的 TextField Valdiation

[英]TextField Valdiation in Appcelerator Titanium

我如何在 Titanium 或 JavaScript 中驗證我的 TextField 以將其限制為僅數字。

var txt_appt2 = Titanium.UI.createTextField({
    top:2,
    left:240,
    width:75,
    color:'#000',
    backgroundColor:'#fff',
    font: {fontSize: 12}
});
txt_appt2.addEventListener('change',function(e){
    txt_appt2.value = txt_appt2.value.replace(/[^0-9]+/,"");
});

添加

keyboardType:Titanium.UI.KEYBOARD_NUMBER_PAD,

到文本字段。

請參閱http://www.lonhosford.com/lonblog/2011/04/06/titanium-limit-the-characters-in-a-textfield/中的示例

對於那些想知道為什么他們會遇到連續循環和錯誤的人;

問題不在於監聽 onChange 事件。 這是正確的事件,因為每次更改值時都會觸發它。 即復制和粘貼、按鍵等。

在 iOS 上,用戶可以復制和粘貼字符,即使您只限於十進制/數字鍵盤。

避免嘗試通過引用文本字段屬性本身來直接設置字段值。 相反,使用文本字段更改時返回的文本字段屬性。 這樣做不會導致 onChange 事件繼續觸發,從而導致永無止境的循環。

// XML

<TextField keyboardType="Ti.UI.KEYBOARD_TYPE_DECIMAL_PAD" value="0.00" onChange="Alloy.Globals.helper.decimalFormat" />

// 合金.js

Alloy.Globals.helper = {
    decimalFormat: function(e) {
        // Strip all characters from the input except digits
        var input = e.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');
        e.source.value = input;
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM