Svi*_*ish 5 html javascript forms jquery events
假设我有一个看起来像这样的表单:
[ Animal name input field ]
Add button
如果我输入名称并按Enter键,则会将具有给定名称的动物添加到表中.工作良好.我现在想要的是调用当前的工作方式"快速添加"并添加一个名为"慢添加"的新功能,我不太清楚该怎么做.基本上我想要的是,如果例如在输入或按下按钮时按住shift键,我希望表单提交方法做一些稍微不同的事情.在我的情况下,我希望它打开一个表格,在添加到表格之前可以添加有关动物的更多细节.
问题是我不太清楚如何做到这一点.我尝试console.info(eventData)
在当前的提交函数中添加一个FireBug ,我发现它eventData
包含一个altKey,shiftKey和controlKey属性,但即使我按下这些键,它们也总是未定义.
那么,当提交表单时按下某些修饰键时,是否有人知道如何在提交处理程序中执行一些特殊操作?
临时解决方案
结束时忽略了submit-button-shift-click-feature,而只是将快速添加功能作为shift-enter-in-input-fields.实现了这样的事情:
$('#new-task')
.submit(onNewAnimal)
.keypress(onNewAnimal);
function onNewAnimal(event)
{
if(event.type == 'keypress' && event.which != 13)
return true;
if(event.shiftKey)
{
// Quick add
}
else
{
// Open slow add dialog
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法仍然好奇,但在那之前,这就是我所拥有的.也许它可以帮助别人:)
小智 2
您可能会因 $(document).keyup 和 $(document).keydown 事件按下 Shift 键。例如我的控制键代码是
$(document).keyup(function (e) {
if (e.which == 17) $.isCtrl=false;
}).keydown(function (e) {
if (e.which == 17) $.isCtrl=true;
});
Run Code Online (Sandbox Code Playgroud)
只需检查一下
if ($.isCtrl) { ... }
Run Code Online (Sandbox Code Playgroud)
在你的处理程序中
归档时间: |
|
查看次数: |
1185 次 |
最近记录: |