如何在Titanium或JavaScript中验证我的TextField以将其限制为仅限数字。
var txt_appt2 = Titanium.UI.createTextField({
top:2,
left:240,
width:75,
color:'#000',
backgroundColor:'#fff',
font: {fontSize: 12}
});
答案 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;
}
};