Skip to content

Commit fddd1d8

Browse files
authored
set target value onchange client-side (#694)
* set target value onchange client-side This may not be a perfect solution. I worry that doing this may have unintended consiquences. For example, what if someone wanted to have some sort of auto-correct feature. Will setting the target value somehow overwrite auto-corrections? From limited testing it seems to work fine, but that testing was not extensive. * changelog entry
1 parent 78f33ff commit fddd1d8

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

docs/source/about/changelog.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ scheme for the project adheres to `Semantic Versioning <https://semver.org/>`__.
1616
Unreleased
1717
----------
1818

19-
Nothing yet...
19+
Fixed:
20+
21+
- ``onChange`` event for inputs missing key strokes :issue:`684`
2022

2123

2224
0.37.0

src/client/packages/idom-client-react/src/element-utils.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,25 @@ export function createElementAttributes(model, sendEvent) {
2222

2323
if (model.eventHandlers) {
2424
for (const [eventName, eventSpec] of Object.entries(model.eventHandlers)) {
25-
attributes[eventName] = createEventHandler(sendEvent, eventSpec);
25+
attributes[eventName] = createEventHandler(
26+
eventName,
27+
sendEvent,
28+
eventSpec
29+
);
2630
}
2731
}
2832

2933
return attributes;
3034
}
3135

32-
function createEventHandler(sendEvent, eventSpec) {
36+
function createEventHandler(eventName, sendEvent, eventSpec) {
3337
return function () {
3438
const data = Array.from(arguments).map((value) => {
3539
if (typeof value === "object" && value.nativeEvent) {
3640
if (eventSpec["preventDefault"]) {
3741
value.preventDefault();
42+
} else if (eventName === "onChange") {
43+
value.nativeEvent.target.value = value.target.value;
3844
}
3945
if (eventSpec["stopPropagation"]) {
4046
value.stopPropagation();

0 commit comments

Comments
 (0)