-
Notifications
You must be signed in to change notification settings - Fork 123
/
checkbox_all.js
60 lines (55 loc) · 1.62 KB
/
checkbox_all.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// PLUGIN_INFO {{{
var PLUGIN_INFO = xml`
<VimperatorPlugin>
<name>CheckBoxAll</name>
<name lang="ja">チェックボックスオール</name>
<description>you can controll all checkbox at a time</description>
<description lang="ja">チェックボックスを一括でコントロールする</description>
<version>1.0</version>
<author mail="[email protected]" homepage="elzup.com">elzup</author>
<minVersion>1.0</minVersion>
<maxVersion>2.0pre</maxVersion>
<detail lang="ja"><![CDATA[
]]></detail>
</VimperatorPlugin>`;
// }}}
(function () {
/* user config */
// デフォルト(引数なしの場合)の変更値
// true: チェックする
// false: チェックを外す
var DEFAULT_CHECK_VALUE = true;
commands.addUserCommand(
['checkboxall'],
'controll all checkbox',
function (args) {
var inputs = window.content.window.document.getElementsByTagName('input');
var v = DEFAULT_CHECK_VALUE;
if (args.length) {
// args[0]のバリデートは必要?
v = args[0] == 'true';
}
for (var i = 0, l = inputs.length; i < l; i++) {
if (inputs[i].type == "checkbox") {
inputs[i].checked = v;
}
}
},
{
literal: 0,
bang: true,
count: true,
argCount: '?',
options: [],
completer: function (context, args) {
context.title = ['value', 'description'];
context.completions = [
['true', 'check all'],
['false', 'uncheck all']
];
}
},
true // replace
);
})();
// vim:sw=2 ts=2 et si fdm=marker: