2014-10-18 64 views
0

代碼:在「this」輸入元素後面插入文本javascript?

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

這是可能的,而不把一個ID或名稱此元素上呢? 或者沒有將它包裝在可識別的div中?

爲了澄清,這應該是事件的鍵碼被按下後的結果HTML:

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

爲什麼不使用類? – 2014-10-18 14:02:18

+0

那麼你的意思呢? – 2014-10-18 14:07:45

回答

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來做到這一點。 – 2014-10-18 14:05:06

+0

我更新了答案,不使用ID – 2014-10-18 14:10:41

0

好了,第一關的使用,不使用內聯JS。但是,爲了回答你的問題,

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

DEMO

1

按照您的要求,並試圖保持自己的風格,你可以使用insertAdjacentHTML DOM元素方法只是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:'協議處理程序。另外,不幸的是,這段代碼要求'輸入'是最後一個元素:http://jsbin.com/ziwutolami/2/ – 2014-10-18 14:13:33

+0

這將追加* OK *文本節點作爲父節點的最後一個子節點。不只是在'input'元素之後。它只會在父元素只有這個「輸入」時才起作用。 – dreyescat 2014-10-18 14:17:13

+0

是的,我看@AmitJoki的答案是最好的,所以我會更新我的答案以使用'outerHTML'方法。感謝您的更正。 :) – 2014-10-18 14:21:18

1

我在這裏使用了混合的答案。 首先我必須創建一個新的變種:

var that = this;

否則JavaScript無法找到「this」。

然後使用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 )直接在輸入之後。