0
對不起,我對JS不太好。Javascript:如何實現「輸入/返回鍵」來保存一個值?
該代碼實質上是用戶雙擊文本,出現文本框,更改文本並保存新值。但是,我希望用戶也能夠單擊輸入以保存新值。
此外,如果可能的話,有一個專門的「保存」按鈕來保存新的值,「丟棄」保留舊的值。
此外,如果我多次雙擊,文本顯示爲「(input type =」text「)」。有沒有辦法消除這種情況?
如果可以,請幫助。
的HTML + JS代碼
<html>
<head>
<script type="text/javascript">
window.onload = function() {
var elements = getElementsByClassName('text-edit', '*', document);
for(var i = 0; i < elements.length; i++) {
elements[i].ondblclick = function() {
this.setAttribute('oldText', this.innerHTML); // not actually required. I use this just in case you want to cancel and set the original text back.
var textBox = document.createElement('INPUT');
textBox.setAttribute('type', 'text');
textBox.value = this.innerHTML;
textBox.onblur = function() {
var newValue = this.value;
this.parentNode.innerHTML = newValue;
}
this.innerHTML = '';
this.appendChild(textBox);
}
}(i);
}
function getElementsByClassName(className, tag, elm) {
var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
var tag = tag || "*";
var elm = elm || document;
var elements = (tag == "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
var returnElements = [];
var current;
var length = elements.length;
for(var i = 0; i < length; i++) {
current = elements[i];
if(testClass.test(current.className)) {
returnElements.push(current);
}
}
return returnElements;
}
</script>
</head>
<div><span class="text-edit">Some text</span></div>
</html>
使用'keyup'處理程序,用於檢查'鍵代碼= 13'。 – Barmar 2014-08-28 04:14:02
有時,從頭開始編寫比讀別人的代碼更容易;)檢查下面的答案,並讓我知道你是否覺得它有用。 – hex494D49 2014-08-28 04:43:21
爲什麼重新發明'getElementsByClassName'?支持IE <9? – 2014-08-28 04:50:48