2012-02-20 99 views
7

我已经在文本框中捕获了剪切事件(jquery)。我想要的是在剪切事件期间触发文本框上的文本。在切割事件中获取文本框的值

我试过访问用户通过evt.originalEvent.clipboardData.getData('文本')剪切的数据,但返回undefined。

我的目标是要知道用户是否剪切了所有文本(文本框现在为空)。

在此先感谢

回答

0

希望我给你的权利:

在jQuery中你可以使用这样的事情,看是否有文本框是每个用户的KEYUP空:

var txt; 
$('#textbox_ID').live('keyup', function() { 
    txt = $(this).val().length; 
    if(txt < 1) { 
     alert("textbox is empty"); 
    } 
}); 

这应该工作,因为每次用户释放一个密钥并将焦点放在文本框中时,它会检查它是否为空。

+0

不,伙计,我期待检测文本框在剪切事件中是否为空 – ptheofan 2012-02-21 07:51:17

+0

由于安全原因,无法在每个浏览器中获取剪贴板数据。为什么你想在剪切事件期间检查文本框?你提到你的目标是要知道用户是否剪下了所有的文字,所以它应该是空的*剪切事件后? – Fabian 2012-02-21 13:44:52

+0

在这个主题上有几个关于SO的问题:http://stackoverflow.com/questions/1144184/js-get-clipboard-data – Fabian 2012-02-21 13:50:34

5

您可以setTimeout持续时间为0,该时间安排立即执行一个函数。这种做法的好处是,一旦文本已经切函数就可以执行,这样你就可以检查那么如果你的文字区域是空的(这将意味着用户已经切断所有文本):

var ta = $('#YOUR_TEXTAREA'); 
ta.bind('cut', function() { 
    setTimeout(function(){ 
     if (!ta.val()) { 
      // user cut the whole text. 
     } 
    },0); 
}); 

你可能还希望在setTimeout之前添加一个检查,以在文本被剪切前测试textarea中是否有任何文本(如果用户在没有选择任何文本的情况下按下Ctrl^X,剪切事件仍然会触发)

+1

不,没有超时。我很确定有一种检索剪切板数据用户的方法。只是还没有弄明白。 – ptheofan 2012-02-21 07:50:45

+1

使用超时是肮脏的,最重要的是你放松了事件的流程。最好的方法是阅读剪贴板,问题是如何!? – ptheofan 2012-03-16 23:23:06