我的用戶希望此表單可以在按Enter而不是提交表單時將焦點提前到下一個字段。我在測試輸入中添加了onkeypress處理程序,以便在按下Enter時更改焦點。更改焦點後取消onkeypress事件
在下面的代碼中,當keydown函數改變焦點時,我看到光標跳轉到新的文本框,但隨後表單被提交,就像我再次按下回車鍵一樣。我認爲,通過在我的事件處理程序中返回false,事件不會被傳遞,但似乎並非如此。我在Chrome和Firefox中都看到過這種行爲。
有人能告訴我我失蹤了什麼嗎?
<form action="" name="confirmation" method="post">
<fieldset>
<div class="clearfix">
<label for="id_event_fuel_amount">Quantity:</label>
<div class="input">
<input type="text" id="event_fuel_amount_id" name="event_fuel_amount" onkeypress="keydown(event, 'event_purchase_amount_id')" />
</div>
</div>
<div class="clearfix">
<label for="id_event_purchase_amount">Sale:</label>
<div class="input">
<input type="text" id="event_purchase_amount_id" name="event_purchase_amount" />
</div>
</div>
<input type="hidden" name="state" value="3" id="id_state" />
<input type="hidden" name="time_stamp" value="2011-09-24 14:34:06" id="id_time_stamp" />
<input type="hidden" name="purchase" value="66" id="id_purchase" />
<input type="submit" value="Save"/>
</fieldset>
</form>
<script>
function keydown(e,s){
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if (code==13){
document.getElementById(s).focus();
return false;
}
}
</script>
是'onkeypress'屬性真的有必要嗎?以編程方式綁定事件將是一個更好的選擇...(因爲那樣你就不必將'keypress'函數暴露給全局命名空間) –