Libraryless. Click here for Pure Java version (6015L/34K).
1 | sclass HInputField {
|
2 | S id = aGlobalID(), name, text; |
3 | bool useWebSocket = true, debug; |
4 | new MapSO params; // for <input> tag |
5 | |
6 | !include #1028121 // setField + change() |
7 | bool requiresWebSocket() { ret useWebSocket; }
|
8 | bool requiresJQuery() { true; }
|
9 | |
10 | S html() {
|
11 | new LS out; |
12 | out.add(tag input("", paramsPlus(params,
|
13 | type := "text", |
14 | +name, |
15 | value := text, |
16 | +id))); |
17 | if (useWebSocket) |
18 | out.add(hjs_escapedDollarVars([[ |
19 | (function() {
|
20 | if (typeof wsSend === 'undefined') return; |
21 | var field = $("#" + $id);
|
22 | if (field.length == 0) return; |
23 | var lastValue = field.val(); |
24 | field.on('change keydown paste input', function() {
|
25 | var value = field.val(); |
26 | if (lastValue == value) return; |
27 | lastValue = value; |
28 | wsSend(JSON.stringify({inputFieldText: {id: $id, text: value}}));
|
29 | }); |
30 | })(); |
31 | ]], +id)); |
32 | ret lines(out); |
33 | } |
34 | |
35 | void onWebSocketJSON(Map map) {
|
36 | Map map2 = optCast Map(map.get("inputFieldText")), ret if null;
|
37 | S id = cast map2.get("id");
|
38 | if (!eq(id, this.id)) ret; |
39 | S text = cast map2.get("text");
|
40 | if (text != null) {
|
41 | if (debug) print("Setting HInputField text: " + quote(text));
|
42 | setField(+text); |
43 | } |
44 | } |
45 | } |
Began life as a copy of #1032454
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1032598 |
| Snippet name: | HInputField - HTML input field with WebSocket support [dev.] |
| Eternal ID of this version: | #1032598/12 |
| Text MD5: | 0cbf8f61abe3c1574b7c803088064c82 |
| Transpilation MD5: | 5b4a52c3e3995092e2a7cc3611e516c3 |
| Author: | stefan |
| Category: | javax / html |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-09-24 19:43:58 |
| Source code size: | 1352 bytes / 45 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 396 / 601 |
| Version history: | 11 change(s) |
| Referenced in: | [show references] |