2013-10-11 2 views
4

Вот scenerio:имитировать KeyUp() на текстовое поле на KeyUp() другого contenteditable DIV

  1. У меня есть содержание редактируемой DIV. У меня также есть textarea, на котором есть некоторые вещи, происходящие на .keyup().
  2. Мне нужно, чтобы на keyup() содержимого редактируемого div скопируйте текст, введенный в contenteditable div, в текстовое поле, а затем запустите событие keyup в текстовом поле через jquery.

То, что я достиг до сих пор:

Я обнаружил, что, KeyUp() не срабатывает до тех пор, пока не будет физическим нажмите на текстовом поле. Первоначально, если я делаю .trigger («keyup») в textarea, ничего не происходит. но если я нажму на текстовое поле, то введите что-нибудь в contenteditable div и сделайте .trigger ('keyup') в textarea, событие keyup textarea будет запущено, и все работает как шарм.

Любые указания будут высоко оценены. Заранее спасибо.

+0

В каком браузере вы тестируете? Это прекрасно работает в Chrome 31 и Firefox 24 http://jsfiddle.net/koala_dev/MGWZY/ –

ответ

4

Не знаете, в чем проблема. Это прекрасно работает:

var textarea=$('#editable_textarea'); 
var div=$('#editable_div'); 

div.on('keyup',function() 
{ 
    textarea.text($(this).text()).trigger('keyup'); 
}); 

textarea.on('keyup',function() 
{ 
    console.log('keyup!'); 
}); 

http://jsfiddle.net/W2P9t/

+0

. Следует отметить, что если вы введете что-либо в текстовое поле, то редактирование '# editable_div' больше не будет влиять на значение 'textarea'. Вы хотите использовать '.val()' на 'textarea' вместо' .text() ': http://jsfiddle.net/W2P9t/3/ – BYossarian

1

Я не полностью понимаю вашу проблему, так как вы, к сожалению, не добавляет никакого кода, но я надеюсь, что-то Лик это работает для вас:

// listening for keyup-event in your content div 
$(document).on("#mycontentdiv", "keyup", function() { 
    // copy text from div to textarea 
    $("#mytextarea").text($("#mycontentdiv").text()); 

    // trigger keyup-event on textarea 
    $("#mytextarea").keyup(); 
}); 
+2

Я считаю, что событие происходит перед селектором ... http://api.jquery.com/on/ – mnoble01

1

Вы попробовали

$('#yourinput').keyup(); 

?

0

Только в случае, если вы хотите иметь точное событие в обоих содержание редактируемой и текстовое поле, вы можете достичь его, как это:

$('#contentEditable').on('keyup', function(e) { 
    $('textarea').text($(this).text()); 
    $('textarea').trigger(e); 
}); 

$('textarea').on('keyup', function(e) { 
    console.log(e); 
}); 

Где HTML часть будет так.

<div id="contentEditable" contenteditable>Lorem ipsum</div> 
<textarea></textarea> 
Смежные вопросы