Appcelerator - 检查哪个文本字段具有焦点

时间:2011-06-09 13:25:47

标签: toolbar appcelerator

我有一个带有PREVIOUS和NEXT按钮的键盘工具栏设置。我想弄清楚哪个文本字段有焦点,所以我可以允许用户跳转到下一个字段或返回上一个字段。我的代码目前看起来像这样:

//Setup keyboard toolbar.
var flexSpace = Titanium.UI.createButton({
    systemButton:Titanium.UI.iPhone.SystemButton.FLEXIBLE_SPACE
});

var navButtons = Titanium.UI.createButtonBar({
    labels:['Previous','Next'],
    backgroundColor:'#336699',
    top:100,
    style:Titanium.UI.iPhone.SystemButtonStyle.BAR,
    height:25,
    width:'auto'
});

navButtons.addEventListener('click',function(e){
    // Previous Button, index 0.
    Titanium.API.info(e.index);
    if (e.index == 0){
        if (nameTxt.hasFocus == "nameTxt"){
            phoneTxt.focus();
        }
    }

    // Next Button, index 1.
    if (e.index == 1){
        if (nameTxt.hasFocus){
            nameTxt.hasFocus = false;
            phoneTxt.hasFocus = true;
        }/*else{
            done.fireEvent('click');
        }*/
    }

}); 

我认为我已接近完成这项工作,所以只需要最后的推动。任何帮助赞赏。

此致 斯蒂芬

3 个答案:

答案 0 :(得分:0)

你可以设置键盘上有下一个按钮吗?

它不会解决前进和后退,但它比下面的解决方案更容易。

困难的方法是跟踪哪个字段在单独的属性中具有焦点。每当焦点更改时,将属性更新为具有焦点的新项目

答案 1 :(得分:0)

您是否尝试过使用带有模糊和焦点的addEventListener? https://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.TextField-object

答案 2 :(得分:0)

从这里摘录:

http://developer.appcelerator.com/question/120797/textfield---how-to-check-the-focus

function CreateTextField(options) {
    var tf = Ti.UI.createTextField(options);
    //define flag
    tf.hasFocus = false;

    tf.addEventListener('focus', function() {
        this.hasFocus = true;
    });

    tf.addEventListener('blur', function() {
        this.hasFocus = false;
    });
    return tf;
}

然后只需调用CreateTextField:

email=CreateTextField({
          width: 150,
          left: 110,
          height: 35,
          hintText: 'login_email',
          borderStyle:Titanium.UI.INPUT_BORDERSTYLE_NONE,
          keyboardType : Titanium.UI.KEYBOARD_EMAIL,
          keyboardToolbar : [navButtons, flexSpace, done],
          color: '#949495'
        })

之后,你可以这样做:

Titanium.API.info(email.hasFocus);

if (e.index == 0){
  if (email.hasFocus){
    email.focus();
  }
}

希望这对你有帮助!