Comments (6)
Let me see if I understood correctly. You want to dinamically change the form field's values based on the value of other fields, while keeping some values?
If that is correct, I would use the Form.inital
function to fill the form, because then you could change the fields based on the changed input you would like to listen for changes. Like:
FormMsg (Form.Input "fieldToListen" inputType fieldValue) ->
let
newFormValue : List (String, Field)
newFormValue =
[ ( "fieldToListen", Field.value fieldValue )
, Form.Init.setString "changeThiField" "toThisValue"
, Form.Init.setBool "changeThiFieldToo" False
]
in
{ model | form = Form.inital newFormValue formValidation }
Note: I haven't used the lastest version of the package, still didn't update my code to Elm 0.18. Code based on the lastest docs (elm-form 1.0.0), didn't test. I don't know if it's the best approach, but it is the one I use (elm-simple-form 4.0.0) and works pretty well.
from elm-form.
The problem with your example above is that you only handle one Form.Input
message, which is what the library does anyway. The value of the Reset message is that you can pass a list of (input, value)
, but the challenge is that you cannot then work with them as easily as before. The code snippet above shows a way of tunneling multiple messages in a Reset but it is not very elegant.
I have another part of my app that has
FormMulti msgs ->
let
newForm =
L.foldl Form.update model.form msgs
in
( { model | form = newForm }
, Cmd.none
)
But this was possible because my Html elements did not have to return Form.Msg.
from elm-form.
Ok I see the problem. The desired function is Form.Tree.asValue
, but isn't exported as the tree structure is an implementation detail:
https://github.com/etaque/elm-form/blob/master/src/Form/Tree.elm#L97
(note that type alias Field = Tree FieldValue
)
Would a BatchInput (List (String, InputType, FieldValue))
message solve your case? How and from where would you emit this message?
from elm-form.
I'm not sure whether the Input type is necessary, in that it is implicit in the field name, but otherwise this would be ideal. The key need is to be able to create this BatchInput in the view function. I might have function that wants to return a Html Form.Msg
but with multiple form updates. When I have a different return type I can create my own message to carry the data to update and then build Form.Msg
from those to fold into the form.
(I have to say I don't really see the the need for the Field
and Fieldvalue
, as everything seemed to work well before.)
from elm-form.
(I have to say I don't really see the the need for the Field and Fieldvalue, as everything seemed to work well before.)
That's because the Tree structure has been extracted since list validation, before that logic was duplicated and scattered between field values and errors.
from elm-form.
doc needs tracked in #85
from elm-form.
Related Issues (20)
- Nesting a multiple field validation loses the error HOT 2
- Initial textarea value on IE does not work HOT 3
- Example code typo in README
- Support for Ints? HOT 2
- validation it kick off onBlur for initially empty values HOT 1
- Providing default values to nested records?
- How to validate input1 value is the same as input2 value HOT 1
- Email validator too permissive? HOT 2
- Custom Error after validating through an API
- Why is "elm-test" a dependency? HOT 2
- Why no Form.Cancel message?
- Validation error doesn't appear under `liveError`
- Ability to persist form state as JSON ?
- Dependency on elm-test causes compatibility error HOT 1
- Exception Thrown in Output. ReferenceError: Elm is not defined
- Extend Form.Input to support date input
- Example does not compile (Elm 0.19.1)
- Update to `elm-explorations/[email protected]`
- Form Input maintained on Reset HOT 2
- Form validation for more than 8 fields? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elm-form.