未提交动态字段(jQuery,web2py)

时间:2014-11-18 20:44:03

标签: javascript jquery html forms web2py

我正在使用web2py编写应用程序,而我正在尝试制作一个用户可以动态添加/删除其他字段的表单。我通过使用jQuery向DOM添加添加字段来解决这个问题,但问题只是提交了硬编码字段(我在页面顶部转储form.vars来检查)。我确保动态字段具有唯一的名称,我一直在搜索html中的错误,但却没有提出任何问题。

这是我的javascript:

$(document).ready(function(){

    var wrapper = $("#formwrapper");
    var addbutton = $("#addfield");
    var removebutton = $('#removefield');

    var x = 2;

    $(addbutton).click(function(){

        $(wrapper).append(
            "<div id='extrareward"+ x +"'><h3>Reward " + x + "</h3>" +
            "<label>Minimum amount to get reward:  </label>" +
            "<input name='min"+ x +"' type='text'><br>" +
            "<label>Reward Description:  </label>" +
            "<textarea name='reward"+ x +"' rows='10' cols='40'></textarea></div>"
        );

        x++;
    });

    $(removebutton).click(function(){
        if (x > 2) {
            x--;
            var id = '#extrareward' + x;
            $(id).remove();
        }
    });
});

这是来自页面源的html表单,其中包含一个静态块和一个动态块:

<form action="#" enctype="multipart/form-data" method="post">
    <div id="formwrapper">
        <label>Minimum amount to get reward:  </label>
        <input name="min1" type="text" value=""><br>
        <label>Reward description:  </label>
        <textarea cols="40" name="reward1" rows="10"></textarea><br>
        <div id="extrareward2">
            <h3>Reward 2</h3>
            <label>Minimum amount to get reward:  </label>
            <input name="min2" type="text"><br>
            <label>Reward Description:  </label>
            <textarea name="reward2"></textarea>
        </div>
    </div>

    <input id="submitbutton" type="submit">

    <div style="display:none;">
        <input name="_formkey" type="hidden" value="1e315a07-a035-4858-822c-614c962ebb98">
        <input name="_formname" type="hidden" value="default">
    </div>
</form>

最后这里是控制器的代码:

@auth.requires_login()    
def create2():

    form = FORM(DIV(LABEL('Minimum amount to get reward:  '), INPUT(_name='min1', _type='text'), BR(),
                    LABEL('Reward description:  '), TEXTAREA(_name='reward1'), BR(),
                    _id='formwrapper'),
                INPUT(_id='submitbutton', _type='submit'))

    if form.process(keepvalues=True).accepted:
        session.flash = 'form accepted'

    else:
        session.flash = 'form rejected'

    return dict(loginform=auth.login(),
                rewardtiersform=form)

我可能只是在某个地方错过了一个愚蠢的错误,但是我在这个问题上已经摸不着头脑了。非常感谢!

0 个答案:

没有答案