我有一些HTML,看起來是這樣的:專注於一個錨標記
<div id="zoomed" style="display:none; position:absolute;">
<a href="#" alt="close" id="closeLink" onclick="closeZoom();" tabindex="2"><img alt="close" style="border-style:none" class="close" id="closeButton" src="Images/trans.png"/></a>
<div class="zoomParent">
<table>
<tbody data-bind="with: currentFactor">
<tr><td class="zIngHeader" colspan="3">
<span data-bind="text: FactorName"></span>
</td>
</tr>
<tr>
<td class="zMin" data-bind="text: formatValues(Min)"></td>
<td><input type="text" data-bind="value: currentValue" class="channel" onkeydown="EnterToTabHack(event);" tabindex="1"/></td>
<td class="zMax" data-bind="text: formatValues(Max)"></td>
</tr>
<tr><td colspan="3" class="graphCell" data-bind="animateColor: $root.statusColor"><div id="zoomPlot" class="zoomPlotStyle"></div></td></tr>
</tbody>
</table>
</div>
</div>
現在,當你在文本框中,你按下TAB鍵,錨標籤獲得焦點,因此,如果您立即回車,你將運行closeZoom()函數。這工作正常。
我想要做的是如果你在文本框中,並且你按下回車鍵,它的行爲方式與按Tab鍵時一樣。所以,我有一個函數來做到這一點:
function EnterToTabHack(event) {
if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
$(".channel").blur();
$("#closeLink").focus();
}
}
模糊部分工作正常,在文本框中的值被寫回到我的視圖模型,因爲我想要的,但重點不我的鏈接結束。擊中輸入兩次應該接受文本框中的值(這是),然後關閉窗口(它不)。
任何想法這裏可能是錯誤的?我看不到任何錯誤消息,但顯然重點不在於錨點鏈接上,如果我點擊標籤(注意:只是模糊似乎也沒有做到這一點)。
編輯:我已經添加了更多的html,因爲它可能或可能不相關。特別是,我使用KnockoutJS進行數據綁定,並且我認爲這使得不能使用幾個人建議的jQuery綁定類型(事件),或者至少,如果我要使用它們,我會必須重新綁定然後每次「currentFactor」更改,因爲我認爲什麼淘汰賽正在做的是銷燬表中的所有內容,並在該部分更改時重新創建它。
另一個編輯:首先,非常感謝所有試圖幫助到目前爲止!我真的很感激你花時間看看這個。
我打過來,把一起JS小提琴:
起初我很困惑,因爲,當然,它工作得很好!然後我添加了img的樣式,看起來用這種方式使用精靈是什麼打破它。如果你從CSS中刪除所有的img樣式,它可以正常工作。與他們在一起,我不能以編程方式集中它。
以前有人看過類似的東西嗎?
你的小提琴可以工作,但它使用jQuery來連接按鍵事件。當我使用with子句時(似乎重新評估with子句刪除所有jQuery有線事件),這似乎不適用於knockoutjs。 – 2012-08-14 18:36:44
如果您在圖像中添加alt標籤(至少在小提琴中),您的原始代碼將起作用,只要您一按即輸入一次即可運行 – Huangism 2012-08-14 20:27:21
@MattBurland使其工作的唯一方法是將原始的onkeydown更改爲onkeyup爲輸入標籤。其他任何事情都會觸發點擊事件1點擊太早或根本沒有點擊。這是沒有綁定使用jQuery的事件,以避免衝突 – Huangism 2012-08-14 21:00:40