[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