粘贴到文本字段TideSDK中

时间:2013-02-10 14:18:07

标签: javascript clipboard tidesdk

我有以下代码,我希望用户能够复制或粘贴到文本字段中, 基本上模仿 ctrl + c ctrl + v

我的问题是:

  1. 如何确保上下文菜单仅显示在文本字段中
  2. 如何将文字粘贴到该区域。
  3. 我已经阅读过这些文档,到目前为止,我还没有这样做:

     var menu = Ti.UI.createMenu();
    
    
        menu.addItem('Copy', function() {
            var data =$.("#this").val()
    
           Ti.UI.Clipboard.getData('text/plain',data);
    
        });
        menu.addItem('Paste', function() {
    
           var data =Ti.UI.Clipboard.getData('text/plain');
           $.("#this").val(data)
        });
    
    function showrightmenu(){  Ti.UI.getCurrentWindow().setContextMenu(menu);}
    

    我可以使用oncontextmenu= "showrightmenu()"来调用它,但现在,如何在此行中粘贴一些内容:

        $.(#this).val(Ti.UI.Clipboard.setData('text/plain'))
    

    AM在黑暗中崛起。我是TideSDK的新手,这是我的第一个项目。

1 个答案:

答案 0 :(得分:0)

问题1

我也是TideSDK的新手并且可能是错的,但据我从API文档中可以看出,上下文菜单绑定到一个窗口,并且在右键单击窗口的不同部分时显示不同的上下文菜单要求你每次都改变窗口的上下文菜单......

示例:

//Create different menus
var context_menu = Ti.UI.createMenu();
var copy_menu    = Ti.UI.createMenu();
//Add menu items etc.
...

//Change context menus on click events depending on clicked element
$('#some-element').mousedown(function(event){
    if(event.which==3){//detect right click
        editor_window.setContextMenu(context_menu);
    }
});
$('#text-field').mousedown(function(event){
    if(event.which==3){//detext right click
        editor_window.setContextMenu(copy_menu);
    }
});

这样,当您单击标识为some-element的元素时,将显示第一个上下文菜单,当您单击#text-field元素时,将显示第二个上下文菜单。

请注意,如果一个元素位于另一个元素内部,则无效。因为这两个事件都会被触发。

问题2

在此代码中,您提供了:

$.(#this).val(Ti.UI.Clipboard.setData('text/plain'))

您希望使用Ti.UI.Clipboard.getData而不是Ti.UI.Clipboard.setData,因为您希望将文本存储在剪贴板中,然后将其放入文本字​​段中。此外,您可能希望将$.(#this)更改为$("#this")$(this)

这应该有效:

$("#some-element").val(Ti.UI.Clipboard.getData('text/plain'))

备注

您似乎对如何使用jQuery感到困惑。要选择元素,请使用$()而不是$.()。此外,使用$("#example"),您可以选择ID为example的DOM元素。 $(this)用于触发事件时调用的函数内部,并引用触发事件的元素。 $("#this")$(this)不同。希望有所帮助...