[Kimchi-devel] [PATCH 2/3] Extend jQuery form

Aline Manera alinefm at linux.vnet.ibm.com
Tue Apr 1 18:48:29 UTC 2014


Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>

On 03/27/2014 11:59 PM, Adam King wrote:
> Facilitate formulating an Object from an HTML form, and populating a form
> from an Object.
>
> Signed-off-by: Adam King <rak at linux.vnet.ibm.com>
> ---
>   ui/js/src/kimchi.form.js | 76 ++++++++++++++----------------------------------
>   1 file changed, 22 insertions(+), 54 deletions(-)
>
> diff --git a/ui/js/src/kimchi.form.js b/ui/js/src/kimchi.form.js
> index 7ffb5e5..0a0af99 100644
> --- a/ui/js/src/kimchi.form.js
> +++ b/ui/js/src/kimchi.form.js
> @@ -15,66 +15,34 @@
>    * See the License for the specific language governing permissions and
>    * limitations under the License.
>    */
> +
>   (function($) {
>       $.fn.serializeObject = function() {
>           var formDataArray = $(this).serializeArray();
> -        var formData = {};
> +        var formData = new Object();
>           $.each(formDataArray, function(index, data) {
> -            var names=kimchi.form.parseFormName(data.name);
> -            kimchi.form.assignValue(names,data.value,formData);
> +            formData.setDeepValue(data.name, data.value);
>           });
>           return formData;
>       };
>   }(jQuery));
>
> -kimchi.form = {};
> -kimchi.form.assignValue = function(names, value, obj) {
> -    var result=value;
> -
> -    if(names.length!=0) {
> -        result=obj;
> -        var name=names.shift();
> -        if(!result) {
> -            result={};
> -        }
> -        if(!result[name]) {
> -            result[name]=kimchi.form.assignValue(names,value);
> -        }
> -        else if(names.length==0) {
> -            if(Array.isArray(result[name])){
> -                result[name].push(value);
> -            }
> -            else {
> -                result[name]=[result[name],value];
> -            }
> -        }
> -        else {
> -            result[name]=kimchi.form.assignValue(names,value,result[name]);
> -        }
> -    }
> -    return(result);
> -}
> -
> -kimchi.form.parseFormName = function(name, parsedName) {
> -    if (!parsedName) {
> -        parsedName=[];
> -    }
> -    if(!name || name=="") {
> -        return(parsedName);
> -    }
> -    var openBracket=name.indexOf("[");
> -    if (openBracket!=-1) {
> -        var id=name.slice(0, openBracket);
> -        parsedName.push(id);
> -        var closeBracket=name.lastIndexOf("]");
> -        if (closeBracket==-1) {
> -            closeBracket=name.length;
> -        }
> -        var tmpName=name.slice(openBracket+1,closeBracket);
> -        kimchi.form.parseFormName(tmpName,parsedName);
> -    }
> -    else {
> -        parsedName.push(name);
> -    }
> -    return(parsedName);
> -}
> +(function($) {
> +    $.fn.fillWithObject = function(obj) {
> +        $(this).find("input").each(function(){
> +            switch($(this).attr('type')) {
> +                case 'text':
> +                    $(this).val(obj.getDeepValue($(this).attr("name")));
> +                    break;
> +                case 'radio':
> +                case 'checkbox':
> +                    var a=String($(this).val());
> +                    var b=String(obj.getDeepValue($(this).attr("name")));
> +                    $(this).prop("checked",(a==b));
> +                    break;
> +                default:
> +                    break;
> +                }
> +            });
> +     };
> +}(jQuery));




More information about the Kimchi-devel mailing list