台灣最大程式設計社群網站
線上人數
1526
 
會員總數:246319
討論主題:189850
歡迎您免費加入會員
討論區列表 >> Java >> 線上鍵盤bug求解
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
線上鍵盤bug求解
價值 : 30 QP  點閱數:1079 回應數:5
樓主

federer
門外漢
0 1
22 3
發送站內信

想請教各位高手:
一直很喜歡這個線上鍵盤的程式,但是發覺如果使用真正鍵盤時,這個程式的線上輸入的功能就被取消了,有沒有人可以幫忙回答,謝謝。
這是線上鍵盤介紹的網址
http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-keyboard-with-css-and-jquery/
以下是控制鍵盤的主要語法
$(function(){
var $write = $('#write'),
shift = false,
capslock = false;

$('#keyboard li').click(function(){
var $this = $(this),
character = $this.html(); // If it's a lowercase letter, nothing happens to this variable

// Shift keys
if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
$('.letter').toggleClass('uppercase');
$('.symbol span').toggle();

shift = (shift === true) ? false : true;
capslock = false;
return false;
}

// Caps lock
if ($this.hasClass('capslock')) {
$('.letter').toggleClass('uppercase');
capslock = true;
return false;
}

// Delete
if ($this.hasClass('delete')) {
var html = $write.html();

$write.html(html.substr(0, html.length - 1));
return false;
}

// Special characters
if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
if ($this.hasClass('space')) character = ' ';
if ($this.hasClass('tab')) character = "\t";
if ($this.hasClass('return')) character = "\n";

// Uppercase letter
if ($this.hasClass('uppercase')) character = character.toUpperCase();

// Remove shift once a key is clicked.
if (shift === true) {
$('.symbol span').toggle();
if (capslock === false) $('.letter').toggleClass('uppercase');

shift = false;
}

// Add the character
$write.html($write.html() + character);
});
});
另外以下是html的主頁
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Online Keyboard</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>

<div id="container">
<textarea id="write" rows="6" cols="60"></textarea>
<ul id="keyboard">
<li class="symbol"><span class="off">`</span><span class="on">~</span></li>
<li class="symbol"><span class="off">1</span><span class="on">!</span></li>
<li class="symbol"><span class="off">2</span><span class="on">@</span></li>
<li class="symbol"><span class="off">3</span><span class="on">#</span></li>
<li class="symbol"><span class="off">4</span><span class="on">$</span></li>
<li class="symbol"><span class="off">5</span><span class="on">%</span></li>
<li class="symbol"><span class="off">6</span><span class="on">^</span></li>
<li class="symbol"><span class="off">7</span><span class="on">&amp;</span></li>
<li class="symbol"><span class="off">8</span><span class="on">*</span></li>
<li class="symbol"><span class="off">9</span><span class="on">(</span></li>
<li class="symbol"><span class="off">0</span><span class="on">)</span></li>
<li class="symbol"><span class="off">-</span><span class="on">_</span></li>
<li class="symbol"><span class="off">=</span><span class="on">+</span></li>
<li class="delete lastitem">delete</li>
<li class="tab">tab</li>
<li class="letter">q</li>
<li class="letter">w</li>
<li class="letter">e</li>
<li class="letter">r</li>
<li class="letter">t</li>
<li class="letter">y</li>
<li class="letter">u</li>
<li class="letter">i</li>
<li class="letter">o</li>
<li class="letter">p</li>
<li class="symbol"><span class="off">[</span><span class="on">{</span></li>
<li class="symbol"><span class="off">]</span><span class="on">}</span></li>
<li class="symbol lastitem"><span class="off">\</span><span class="on">|</span></li>
<li class="capslock">caps lock</li>
<li class="letter">a</li>
<li class="letter">s</li>
<li class="letter">d</li>
<li class="letter">f</li>
<li class="letter">g</li>
<li class="letter">h</li>
<li class="letter">j</li>
<li class="letter">k</li>
<li class="letter">l</li>
<li class="symbol"><span class="off">;</span><span class="on">:</span></li>
<li class="symbol"><span class="off">'</span><span class="on">&quot;</span></li>
<li class="return lastitem">return</li>
<li class="left-shift">shift</li>
<li class="letter">z</li>
<li class="letter">x</li>
<li class="letter">c</li>
<li class="letter">v</li>
<li class="letter">b</li>
<li class="letter">n</li>
<li class="letter">m</li>
<li class="symbol"><span class="off">,</span><span class="on">&lt;</span></li>
<li class="symbol"><span class="off">.</span><span class="on">&gt;</span></li>
<li class="symbol"><span class="off">/</span><span class="on">?</span></li>
<li class="right-shift lastitem">shift</li>
<li class="space lastitem">&nbsp;</li>
</ul>
</div>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="js/keyboard.js"></script>
</body>
</html>

本篇文章發表於2013-10-04 21:53
== 簽名檔 ==
federer 
1樓
回應

香帥
檢舉此回應
他那不是bug.那是簡單範例
當鍵盤啟動時,它還是有效,且鍵盤要開始啟動前,要滑鼠先點一下游標顯示後,才可按鍵盤字元顯示在游標位置
這時候線上鍵盤按一下還是顯示在最後的字元,因為他是
$write.html($write.html() + character);
這一行程式碼是簡單的增加字元到最後面
您要其他功能,就要自己去寫
本篇文章回覆於2013-10-05 22:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

federer
檢舉此回應
感謝樓上的回覆
這程式怪異的地方是線上鍵盤會在你使用實體鍵盤後,網頁就必須重新載入後才可使?
如要讓兩者功能皆可同時使用,不知道要增加何者語法才行??
本篇文章回覆於2013-10-05 23:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
這程式怪異的地方是線上鍵盤會在你使用實體鍵盤後,網頁就必須重新載入後才可使?
->這我試過,是可以繼續,不必重新載入
測試網址在
http://ap.a168a.com/test/keyboard/index.html
兩者功能皆可同時使用,只是線上鍵盤字都加在最後,不能加在游標上
本篇文章回覆於2013-10-06 01:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

federer
檢舉此回應
再次感謝樓上的回應
1.上述的網頁在CHRMOE就不能使用,是否有解?
2.如果要改成依滑鼠游標來進行輸入,應加入什麼樣的語法呢?
本篇文章回覆於2013-10-06 23:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

federer
檢舉此回應
感謝大家最後試出來了
http://jsfiddle.net/MNyyT/1/

如果想要讓這個程式,在每次按下鍵盤時可以從滑鼠的地方開始新增文字,那應該如何修改
,懇請高手幫忙?謝謝
本篇文章回覆於2013-10-20 22:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.