0

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

我的问题是:

  1. 如何确保上下文菜单仅出现在文本字段中
  2. 如何将文本粘贴到区域中。

我已经阅读了文档,到目前为止我还没有工作:

 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'))

我在黑暗中摸索。我是 TideSDK 的新手,这是我的第一个项目。

4

1 回答 1

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);
    }
});

这样,当您单击具有 id 的元素时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 感到困惑。要选择一个元素,请使用$()and not $.()。此外,$("#example")您可以选择带有 id 的 DOM 元素example$(this)在触发事件时调用的函数内部使用,并引用触发事件的元素。$("#this")不一样$(this)。希望那有所帮助...

于 2013-02-10T15:18:47.507 回答