【问题标题】:Dynamic Form Creation and submission in OOPOOP 中的动态表单创建和提交
【发布时间】:2013-08-09 16:35:35
【问题描述】:

我正在尝试创建一个类来动态创建表单,然后提交表单。这是一个简单的课程,但现在我迷路了。

       var creathtml=function(){

       this.createform=function(o,title){

        var openingtag="<form action='#' class='form-horizontal well' onSubmit='this.submitform'><fieldset><legend>"+title+"</legend>";
        var fields="";

        for (var i=0; i<o.length; i++)
        {

            if(o[i].type=='input')
            {

            fields+="<div class='control-group'><label class='control-label' for='"+o[i].id+"'>"+o[i].label+"</label><div class='controls'><input type='"+o[i].subtype+"'  id='"+o[i].id+"' class='"+o[i].class+"'></div></div>";
            }

            if(o[i].type=='button')
            {

            fields+="<div class='control-group'><div class='controls'><button type='"+o[i].subtype+"'  id='"+o[i].id+"' class='"+o[i].class+"'>"+title+"</button></div></div>";
            }



        }

        var closingtag="</fieldset></form>";
            $(body).html (openingtag+fields+closingtag;

        };

    this.submitform=function()

        {

         console.log('mnmnmnmn');

                     return false;          
        }   

    }

用法

            var obj= new creathtml;

                var  h=obj.createform([
             {'type':'input','subtype':'input','name':'Wow','label':'Item Name','id':'itmname','class':''},

             {'type':'input','subtype':'input','name':'hello','label':'Item Code','id':'hello','class':''},

             {'type':'input','subtype':'input','name':'hello','label':'Item Code','id':'hello2','class':''}, 
         {'type':'button','subtype':'submit','name':'submit','label':'Null','id':'submit','class':'btn btn-primary'}

             ],'Create New Items');

我已成功创建 HTML 并填充到 DOM。但不知道如何检测表单提交或为这个特定类创建提交方法?

这是我第一次尝试 javascript OOP,所以如果做错了请尽可能提出正确的方法

【问题讨论】:

    标签: javascript jquery oop


    【解决方案1】:

    您已经检测到带有onSubmit='this.submitform' 的表单提交。此外,如果可能,您可能希望使用模板引擎。

    由于您已经在使用 jQuery,为表单提交添加一个监听器是理想的:

    this.createform = function(o,title) {
        ...
        for (var i=0; i<o.length; i++)
        {
            ...
            $('.' + o[i].formClass).on('submit', function() {
                console.log('handle form submit here');
            });
        }
    ...
    };
    

    【讨论】:

    • this.submitform 未按预期工作。其次,我想在课堂上使用表单监听器,而不是在课堂外。我该怎么做。
    • $('.form-horizontal') ?
    • 使用相同的类并不明显。每个表单模板可能不同。
    • $('.' + formClassName)
    • OK 我如何在 oop 样式中使用?
    猜你喜欢
    • 2013-01-27
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多