From e4598014661466297317c38eb0e8af019dd1791f Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 27 Mar 2024 11:27:24 +0800 Subject: [PATCH] bugfix --- bricks/form.js | 43 ++++++++++++++++++++++++++++++++++++++++--- bricks/input.js | 7 +++++++ examples/form.ui | 7 +------ 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/bricks/form.js b/bricks/form.js index c5fec21..e4f1ae7 100644 --- a/bricks/form.js +++ b/bricks/form.js @@ -1,5 +1,7 @@ var bricks = window.bricks || {}; +bricks.need_formdata_fields = ['file', 'image', 'video', 'audio']; + bricks.FieldGroup = class extends bricks.VBox { constructor(opts){ opts.leftMargin = '10px'; @@ -27,6 +29,9 @@ bricks.FieldGroup = class extends bricks.VBox { if (fields[i].uitype !== 'hide'){ dc.add_widget(box); } + if(bricks.need_formdata_fields.includes(fields[i].uitype)){ + form.need_formdata = true; + } var txt = new bricks.Text({ otext:fields[i].label||fields[i].name, dynsize:true, @@ -71,7 +76,7 @@ bricks.FormBody = class extends bricks.VScrollPanel { this.form = form; this.name_inputs = {}; this.fg = new bricks.FieldGroup({}); - this.fg.build_fields(this.form, this, form.opts.fields) + this.fg.build_fields(form, this, form.opts.fields) } } @@ -96,6 +101,7 @@ bricks.Form = class extends bricks.VBox { opts.overflow = "auto"; super(opts); this.name_inputs = {}; + this.need_formdata = false; if (this.opts.title){ var t = new bricks.Title3({ otext:this.opts.title, @@ -192,10 +198,41 @@ bricks.Form = class extends bricks.VBox { } return data; } + get_formdata(){ + var data = new FormData(); + for (var name in this.name_inputs){ + if (! this.name_inputs.hasOwnProperty(name)){ + continue; + } + var w = this.name_inputs[name]; + var d = w.getValue(); + if (w.required && ( d[name] == '' || d[name] === null)){ + bricks.debug('data=', data, 'd=', d); + new bricks.Error({title:'Requirement', message:'required field must input"' + w.label + '"'}) + w.focus(); + return; + } + if (bricks.need_formdata_fields.includes(w.uitype)){ + var files = w.get_files(); + for (var i=0;i