這是我第一次寫文章(處女做),寫得很差的地方別客氣直接指出來。謝謝!!!javascript
背景交代:java
因項目要求要實現按下Ctrl+Enter換行。bash
看起來要求挺簡單的,就是兩個按鈕按下實現換行。可是我第一次接觸,個人第一想法是到百度搜索看有沒有代碼(菜得摳jio),還真找到了一點代碼。學習
靈感來源:this
blog.csdn.net/qwh66/artic…,從吸收了經驗(拷代碼)
spa
代碼:.net
吸收的代碼:code
<script type="text/javascript">
var down=0; //設置全局變量down,用來記錄ctrl是否被按下;
function enter()
{
if(event.keyCode==17)
{
down=1; //ctrl按下
}
if(event.keyCode==13)
{
if(down==1)
{
document.getElementById("contend").value+= '\n';
down=0; //換行後記得將全局變量置爲1,不然enter將變成換行,失去發送功能
}else
{
document.getElementById("btn").click(); //執行按鈕發送的功能
document.getElementById("contend").value="";
}
}
}
</script>
複製代碼
本身的代碼:cdn
var down = 0; // 設置全局變量down,用來記錄ctrl是否被按下;
var messageText = document.getElementById('messageText');// 獲取文本框節點
$(document).off('keydown','#messageText').on('keydown','#messageText',function(fn){// 鍵盤按下事件
if(fn.keyCode == 17){// 按下了Ctrl
down = 1;
}
if(fn.keyCode == 13){// 按下了Enter
if(down ==1){// 判斷是否按下Ctrl
$(this).val($(this).val()+'\n');// 插入內容以及換行
var scrollTop = messageText.scrollHeight;// 獲取滾動條高度
$(this).scrollTop(scrollTop);// 設置滾動條高度
$(document).off('keyup','#messageText').on('keyup','#messageText',function(fn){
if(fn.keyCode == 17){// 鬆開了了Ctrl
down = 0;// 重置全局變量down,Ctrl鬆開了
}
fn.stopPropagation();// 阻止冒泡
});
}else{
window.event.returnValue = false;// 暫時屏蔽回車
}
}
fn.stopPropagation();// 阻止冒泡
});
複製代碼
對代碼的理解:blog
若是按照第一份代碼是能完成換行的,可是我的比較挑剔,不知足於單單的一個換行。
第二份代碼(也就是本身的代碼),要考慮到用戶存在換多行的狀況,若是換了多行有涉及到了高度始終不會改變的狀況,還有就是一直按住了Ctrl鍵狀況(目前就想到這兩種狀況),因此多了要怎麼去獲取滾動條的高度以及判斷鬆開了Ctrl按鈕重置了全局變量down。
學習到的思路:
遇到困難或者不懂的地方不要沒有頭緒的嘗試,查查資料借鑑經驗(多問),但也別照搬應該先理解做者的思路,再把這個思路用到本身的項目進行修改,改爲知足本身項目需求的代碼!
在下有問題請教你們:
來自有點自卑的碼農的文章,但願能利人又利己!