2014-10-18 3 views
0

Код:Вставить текст после «этого» элемента ввода с помощью javascript?

<input type="text" onkeydown=" 
    if (event.keyCode == 13) { HERE, ECHO "OK" RIGHT AFTER THIS INPUT ELEMENT } 
"> 

Возможно ли это сделать, не подвергая идентификатор или имя этого элемента? Или не обманывать его в идентифицируемом div?

Чтобы уточнить, это должно быть результатом HTML после скан событие нажатия:

<input type="text" onkeydown=" 
    if (event.keyCode == 13) { HERE, ECHO "OK" RIGHT AFTER THIS INPUT ELEMENT } 
">OK 
+0

Почему бы не использовать класс? –

+0

как вы имеете в виду тогда? –

ответ

1

Если вы хотите использовать JQuery вы можете сделать следующее:

HTML

<input name="ok" type="text" id="showOK" /> 

JAVASCRIPT

$("#showOK").keypress(function() { 
    if (event.keyCode == 13){ 
    $("<p>OK</p>").insertAfter("#showOK"); 
    } 
}); 

Без использования ID

<input type="text" onkeydown="if (event.keyCode == 13) { $('<p>OK</p>').insertAfter(this);}"> 
+0

OP определенно заявляет, что не использует атрибут id. Для этого вам не нужен jQuery. –

+0

Я обновил ответ, чтобы сделать это без использования id –

0

Ok, во-первых, не используйте рядный JS. Но чтобы ответить на ваш вопрос,

<input type="text" onkeydown=" 
    if (window.event.keyCode == 13) { this.outerHTML = this.outerHTML + 'Ok'; } "/> 

DEMO

1

Следуя ваши требования и пытается сохранить свой стиль, вы можете использовать insertAdjacentHTML методы DOM Element, чтобы добавить текст сразу после input элемента.

<input type="text" onkeydown=" 
    if (event.keyCode == 13) { this.insertAdjacentHTML('afterend', 'OK');} 
"> 

См demo

0
<input type="text" onkeydown="ok(this, event)"/> 
function ok(el, event) { 
    var _ok = document.createElement('span'); 

    _ok.textContent = 'ok'; 

    if (event.which == 13) { 
     el.parentNode.insertBefore(_ok, el.nextSibling) 
    } 
} 
0

Попробуйте это:

<input type="text" onkeydown="(function(event){ 
    var input = event.target; 
    if(event.keyCode == 13){ 
     input.outerHTML += 'OK'; 
    } 
    })(window.event);" /> 

Demo.

+0

Вам не нужен обработчик протокола javascript: '. К сожалению, этот код требует, чтобы 'input' был последним элементом для работы: http://jsbin.com/ziwutolami/2/ –

+0

Это добавит текстовый узел * OK * в качестве последнего дочернего элемента родительского узла , Не только после элемента 'input'. Он будет работать, только если родительский элемент имеет только этот «вход». – dreyescat

+0

Да, я вижу, что ответ @ AmitJoki является лучшим, поэтому я обновляю свой ответ на использование метода 'externalHTML'. Спасибо за исправление. :) –

1

Здесь я использовал смесь ответов. Прежде всего мне пришлось создать новый var:

var that = this;

Или еще javascript не смог найти «это» как-то.

Затем используется метод JQuery:

$('<span>OK</span>').insertAfter(that); 

Итоговый в:

<input type="text" onkeydown=" 
    if (event.keyCode == 13) { var that = this; $('<span>OK</span>').insertAfter(that); } 
"> 
0

Попробуйте это:

<input type="text" onkeydown=" 
if (event.keyCode == 13) { this.parentNode.insertBefore(document.createTextNode('OK'), this.nextElementSibling); } 
"> 

Это добавит текстовый узел (без создания какого-либо срока или DIV) непосредственно после ввода.

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