Appcelerator Titanium中的文本字段验证

时间:2011-04-07 07:36:24

标签: javascript android titanium

如何在Titanium或JavaScript中验证我的TextField以将其限制为仅限数字。

var txt_appt2 = Titanium.UI.createTextField({
    top:2,
    left:240,
    width:75,
    color:'#000',
    backgroundColor:'#fff',
    font: {fontSize: 12}
});

3 个答案:

答案 0 :(得分:9)

txt_appt2.addEventListener('change',function(e){
    txt_appt2.value = txt_appt2.value.replace(/[^0-9]+/,"");
});

答案 1 :(得分:6)

添加

keyboardType:Titanium.UI.KEYBOARD_NUMBER_PAD,

到TextField。

请参阅http://www.lonhosford.com/lonblog/2011/04/06/titanium-limit-the-characters-in-a-textfield/

上的示例

答案 2 :(得分:0)

对于那些想知道为什么他们不断遇到循环和错误的人;

问题不在于监听onChange事件。这是正确的事件,因为每次值更改时都会触发。即复制和粘贴,按键等。

在iOS用户上,即使您只限于十进制/数字键盘,也可以复制和粘贴字符。

避免尝试直接通过引用文本字段属性本身来设置字段值。而是使用更改文本字段时返回的文本字段属性。这样做不会导致onChange事件继续触发,从而导致永无止境的循环。

// XML

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

// Alloy.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;
    }
};