【发布时间】:2010-06-09 15:45:07
【问题描述】:
假设我有一个如下所示的表单:
[ Animal name input field ]添加按钮
如果我输入名称并按 Enter 键,具有给定名称的动物将添加到表格中。工作正常。我现在想将当前的工作方式称为“快速添加”并添加一个名为“慢速添加”的新功能,我不太确定该怎么做。基本上我想要的是,例如,如果在输入或单击按钮时按住 shift 键,我希望表单提交方法做一些稍微不同的事情。在我的例子中,我希望它打开一个表单,可以在将动物添加到表格之前添加更多关于动物的详细信息。
问题是我不太确定该怎么做。我尝试在我当前的提交函数中添加一个 FireBug console.info(eventData),我发现 eventData 包含一个 altKey、shiftKey 和 controlKey 属性,但即使我按住这些键,它们也总是未定义。
那么,有谁知道当提交表单时按下某些修饰键时,我如何在提交处理程序中做一些特别的事情?
临时解决方案
最终忽略了提交按钮-移位-点击-功能,而只是将快速添加功能作为移位-输入-输入-字段。实现它是这样的:
$('#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;
}
仍然好奇是否有更好的方法,但在那之前,这就是我所拥有的。也许它也可以帮助其他人:)
【问题讨论】:
-
@John:这个问题是关于修饰键的左右版本之间的差异。它还谈到了点击事件而不是提交事件。
标签: javascript jquery html events forms