-
Notifications
You must be signed in to change notification settings - Fork 14
/
submit.js
37 lines (28 loc) · 876 Bytes
/
submit.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var extend = require('xtend')
var getFormData = require('form-data-set/element')
var BaseEvent = require('./base-event.js');
var ENTER = 13
module.exports = BaseEvent(submitLambda);
function submitLambda(ev, broadcast) {
var target = ev.target
var isValid =
(ev.type === 'submit' && target.tagName === 'FORM') ||
(ev.type === 'click' && target.tagName === 'BUTTON') ||
(ev.type === 'click' && target.type === 'submit') ||
(
(target.type === 'text') &&
(ev.keyCode === ENTER && ev.type === 'keydown')
)
if (!isValid) {
if (ev.startPropagation) {
ev.startPropagation()
}
return
}
var value = getFormData(ev.currentTarget)
var data = extend(value, this.data)
if (ev.preventDefault) {
ev.preventDefault();
}
broadcast(data);
}