问题描述
当我在后端表单上使用日期选择器小部件并且用户手动输入日期时,在该字段中按Enter时将保存该表单;有什么办法可以禁用该行为?
我的Yaml文件
fields:
field_1:
label: field_1
type: text
span: storm
cssClass: col-xs-4
attributes:
tabindex: 1
field_2:
label: field_2
type: text
span: storm
cssClass: col-xs-4
attributes:
tabindex: 2
date:
label: 'date,don't press enter!'
mode: date
type: datepicker
span: storm
cssClass: col-xs-4
attributes:
tabindex: 3
解决方法
您必须使用javascript。
您可以通过几种方式添加javascript-我的首选方法是在您的fields.yaml中定义部分,并将javascript放在部分中。您还可以将JavaScript直接包含在plugins/foo/bar/controllers/baz/
类似的事情会起作用:
$('form').on('keyup keypress',function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode === 13) {
e.preventDefault();
return false;
}
});
请注意,更改表单和按键的工作方式是不受欢迎的-浏览器,屏幕阅读器等的默认行为,假设按Enter键将提交表单。我建议您仅在有少量用户可以将此信息传递给用户的情况下进行此更改(或告诉他们在提交表单之前不要点击Enter)。