Hidden field in editor, need to submit this field on edit (inline) BUT NOT on create
Hidden field in editor, need to submit this field on edit (inline) BUT NOT on create
editor = new $.fn.dataTable.Editor({
ajax: "/api/NewUser",
table: "#xy",
formOptions: {
inline: {
onBlur: true,
submit: 'allIfChanged'
}
},
fields: [
{ label: "Anrede", name: "user.gender", type: "radio", options: [{ label: "Herr", value: 1 }, { label: "Frau", value: 0 }], def: 1 },
{ label: "", name: "user.user_id", type: "hidden" }, ** <<<< this field not to be submitted at all on create, only on edit**
{ label: "", name: "user.title", type: "hidden" }
{ label: "Vorname1", name: "user.given_name1" },
...
...
The field's value is always null or empty on create, therefore it should NOT be submitted on create, where it throws an error for being empty / having a wrong format (int).
On edit it works fine as is.
The fields value on create can not be set downhill on validation, it should simply not be submitted at all. (...not possible to just set a default value here, as the db table expects this field to be null or absent, on insert. Any integer default value set on this field before submitting e.g. collides with db constraints etc.)
Think there must be a quick and easy solution to this one.
Thanks for your help! :]
m
This question has an accepted answers - jump to answer
Answers
Excellent answer.
Another option that might be worth considering is to have a second Editor instance - i.e. one for create, one for edit. Then setup the fields as you need for each.
There is
fields.submit
which is currently just a boolean. You've got me wondering if I should make it capable of being a string ofcreate
,edit
orboth
as well as the boolean...Allan
rf1234
I just copy pasted your solution and it worked perfect, this never ever happens... great, many thanks!! Perfect as is!
I spend a couple of useless hours in the beginning on playing around using .add and .clear on preCreate etc. Then serverside on validation some creative but most of all unsuccessfull trial and error loss of time.
I initially also tried the second 'editorCreate..' instance, @Allen, but it nearly doubles the code, nobody will understand why so much identical code for one micro difference, plus, both instances interfered because of my zero patience, overlooking something. I reverted to single instance as fast as I thought it migth be a plan B.
So, rf1234's
if ( action === 'create' ) {
var key = Object.keys(d.data)[0];
delete d.data[key].user.user_id;
...
nails it. Amen.
Thanks again both of you for your replies.
m