2012-03-11 2 views
0

У меня есть текстовое поле, в котором есть событие keyup, чтобы показать предварительный просмотр отображаемого ввода. Тем не менее, я хочу отобразить тот же предварительный просмотр сразу после загрузки элемента.Как называется событие «onload»?

$('textarea[name="ay[description]"]').on('keyup', function(e){ 

Самый простой из всех является инициирование .trigger('keyup') в конце объявления. Однако нет ли такого события, как load, onload или ready, что я пропустил под другим именем?

+0

Готовое мероприятие на документе может быть использовано. Просто отредактируйте отображаемый код, чтобы вы могли вызывать как в обработчике ключей, так и когда документ готов. – tvanfosson

+0

Очень сложно понять, что здесь задают. – gdoron

ответ

0

Событие onLoad называется «load», но оно срабатывает только для определенных объектов/элементов (iframes, window, document).

Событие нагрузки отправляется элементу, когда он и все подэлементы имеют полностью загруженную . Это событие может быть отправлено любому элементу , связанному с URL-адресом: изображениями, сценариями, фреймами, фреймами и окном .

http://api.jquery.com/load-event/

+0

Итак, мой вопрос в том, есть ли способ инициировать одно и то же событие для 'textarea'? – Gajus

+0

Нет. Это событие никогда не будет работать для текстового поля. В приведенной выше цитате это событие * может быть отправлено * в ... - оно не может быть отправлено другим элементам. –

+0

Ну, это была бы хорошая возможность иметь (адресованный команде jQuery dev). – Gajus

0

Готовое событие на документе, могут быть использованы. Просто отредактируйте отображаемый код, чтобы вы могли вызывать как в обработчике ключей, так и когда документ готов. Расширьте это, если это необходимо для других событий (например, «change», если вам нужно обработать copy/paste).

function previewText(input, display) 
{ 
    // do the preview of the input element in the display div 
} 

$(function() { 
    previewText($('textarea[name="ay[description]"]'),$('#ay-preview')); 

    $('textarea[name="ay[description]"]').on('keyup change',function() { 
     previewText($(this),$('#ay-preview')); 
    }); 
}); 
0

Если я правильно понял, вы хотите сделать предварительный просмотр после каждого нажатия клавиш И первоначально, когда страница закончила загрузку. Вы ван это сделать:

$(document).ready(render); 
$('textarea[name="ay[description]"]') 
.on('keyup', render); 

var render = function() { 
    // DO render stuff 
} 
0

ПРИМЕЧАНИЕ

ОП отметил, что, если иное не отмечалось, Namespaced событие не всегда необходимо. Совершенно верно:

$(document).ready(function(){ 
    var $aydesc = $('textarea[name="ay[description]"]'), 
     $goeshere = $('#goeshere'); 

    $aydesc.on('keyup.preview', function(e){ 
     $goeshere.text($(this).val()); 
    }); 

    $aydesc.trigger('keyup'); 
}); 

http://jsfiddle.net/r8Qvz/4/

не обязательно свидетельствуют о том, что вам всегда нужно, чтобы события пространств имён делать этого добиться, поэтому я актуализация ответ.

Я думаю, вы могли бы найти namespaced event полезно, если у вас есть несколько keyup обработчиков для этого элемента:

$(document).ready(function(){ 
    var $aydesc = $('textarea[name="ay[description]"]'), 
     $goeshere = $('#goeshere'); 

    $aydesc.on('keyup.preview', function(e){ 
     $goeshere.text($(this).val()); 
    }); 

    $aydesc.trigger('keyup.preview'); 
}); 

http://jsfiddle.net/r8Qvz/3

Namespaced событие довольно изящное, я думаю.

Конечно, вы могли бы сделать это, не ловкий способ:

(Это было исправлено, он не работал ранее.)

$(document).ready(function(){ 
    var $aydesc = $('textarea[name="ay[description]"]'), 
     $goeshere = $('#goeshere'); 

    var preview = function(e){ 
     $goeshere.text($(this).val()); 
    }; 

    $aydesc.on('keyup', preview); 

    preview.call($aydesc); 
}); 

http://jsfiddle.net/r8Qvz/5/

Если у вас есть несколько textarea s, дайте мне знать, и я обновлю его, чтобы справиться с этим делом.Если вы это сделаете, вам понадобится какая-то логика, по которой должно отображаться значение textarea, если только у каждого textarea нет своей собственной цели отображения.

+0

Вы можете сразу прикрепить событие '.trigger' к объявлению события' keyup'. Кроме того, соглашение об именах для используемых вами переменных чуждо javascript, особенно префикс '$'. – Gajus

+0

Хм ... Ну, это, конечно, правда, за исключением того, что я указываю, что вы можете дать имя определенному обработчику событий; кто знает, есть ли у вас другие, и просто хочу уволить этого человека. Я полагаю, что это изменится, если вы обнаружите, что это полезно (например, вы говорите: '$ .trigger ('keyup')' будет работать во многих случаях), но мои демонстрации работают (сообщите мне об этом иначе). Кроме того, я использую '$' для обозначения переменных, которые являются объектами jQuery. Я бы не назвал это «инопланетянином», и это все равно, но я видел, как это делали другие, которых я уважаю, и откуда я его получил. –

Смежные вопросы