代码之家  ›  专栏  ›  技术社区  ›  st4ck0v3rfl0w

通过邮寄提交UL的最佳方式?

  •  4
  • st4ck0v3rfl0w  · 技术社区  · 14 年前

    快速提问。。。

    我有一个输入框,在按enter键时,将值添加到无序列表中。如何将这个无序列表传递给jquery post?我使用的是form.serialize,所以我不必为发布定义每个变量。

    例如,假设我输入了3个水果,它们被动态添加到表单中的无序列表中。

    水果:[在此处输入文本]

    • 苹果

    我在考虑创建一个隐藏的文本字段,每当用户按下enter键时,该字段就会填充新值。

    还有其他想法吗?

    3 回复  |  直到 14 年前
        1
  •  20
  •   Makram Saleh    14 年前
    <ul>
        <li>Apple<input type='hidden' name='fruits[]' value='Apple'/></li>
        <li>Pear<input type='hidden' name='fruits[]' value='Pear'/></li>
        <li>Banana<input type='hidden' name='fruits[]' value='Banana'/></li>
    </ul>
    

    提交后,您将在中获得一个数组 $_POST fruits

        2
  •  2
  •   user180100 user180100    14 年前

    类似于(ul内容的动态构造):

    <html>
    <head>
        <title>S.O. 3287336</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            $('#add').click(function() {
                var li = $('<li></li>').text($('#edit').val());
                $('#ul').append(li);
            });
    
            $('#addForm').submit(function() {
                var ul = "";
    
                $('#ul li').each(function() {
                    ul += $(this).html() + ";"
                });
    
                alert("About to submit: " + ul); 
                return false; // don't submit
            });
        });
        </script>
    </head>
    <body>
    <ul id="ul">
    </ul>
    <form id="addForm">
        <input type="text" name="edit" id="edit" value=""/>
        <input type="button" id="add" value="Add"/>
        <input type="submit" id="submit-btn" value="End"/>
    </form>
    </body>
    </html>
    
        3
  •  1
  •   Adam Lukaszczyk    14 年前

    当您向UL动态添加东西时,您可以使用数组名称添加隐藏输入,如

    <input type='hidden' name='ul[1]' value='banana'/>
    <input type='hidden' name='ul[2]' value='apple'/>
    <input type='hidden' name='ul[3]' value='pear'/>
    
        4
  •  0
  •   Robert Nyström    4 年前

    类似的东西也适用于Pythons Flask,但是您必须使用request.form.getlist(arg)而不是“get”。

    <form action='/test' method="post">
        <ul>
            <li>Apple<input type='hidden' name='fruits' value='Apple'/></li>
            <li>Pear<input type='hidden' name='fruits' value='Pear'/></li>
            <li>Banana<input type='hidden' name='fruits' value='Banana'/></li>
        </ul>
        <input type="submit">
    </form>
    

    在app.py中:

    @app.route('/fruits', methods=['GET', 'POST'])
    def get_fruits():
    if request.method == 'POST':
        fruits = request.form.getlist("fruits")
        print fruits
    return render_template(fruits.html)
    

    这将打印出:

    ['Apple', 'Pear', 'Banana']