Javascript 输入字段(使用wtforms创建)在添加jQuery脚本后中断

Javascript 输入字段(使用wtforms创建)在添加jQuery脚本后中断,javascript,jquery,flask,jinja2,wtforms,Javascript,Jquery,Flask,Jinja2,Wtforms,我正在创建一个简单的flask web应用程序,它本质上是一系列输入表单。我成功地使用wtforms和以下代码制作了一个测试表单: from wtforms import Form, StringField, validators, IntegerField, FileField, SelectMultipleField class FooInputs(Form): foo = StringField('Foo', default='bar') jazz = SelectMul

我正在创建一个简单的flask web应用程序,它本质上是一系列输入表单。我成功地使用wtforms和以下代码制作了一个测试表单:

from wtforms import Form, StringField, validators, IntegerField, FileField, SelectMultipleField

class FooInputs(Form):
    foo = StringField('Foo', default='bar')
    jazz = SelectMultipleField('Jazz', choice=[(...
在此模板中呈现:

<!doctype html>
<html>
<head>
  {% from "_formhelpers.html" import render_field %}
</head>

<body>
  <form method=post enctype=multipart/form-data>
    <dl>
      {% for FIELD in FIELDS %}
        {{ render_field(form[FIELD]) }}
      {% endfor %}
    </dl>
    <p><input type=submit value=Next>
  </form>
</body>
</html>
但是,当我在表单中引入此脚本时,如下所示:

<!doctype html>
<html>
<head>
  {% from "_formhelpers.html" import render_field %}
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
  </script>
</head>

<body>
  <form method=post enctype>
    <dl>
      {% for FIELD in FIELDS %}
        {{ render_field(form[FIELD]) }}
      {% endfor %}
    </dl>
    <p><input type=submit value=Next>
  </form>
  <script type="text/javascript" src="/static/scripts/variable_form.js">
  </script>
</body>
</html>

{%来自“\u formhelpers.html”导入呈现\u字段%}
{字段%中的字段为%1}
{{render_field(form[field])}
{%endfor%}

除了一个主要问题外,这一切似乎都正常工作,表单的输入字段中从未出现任何字符。我可以键入逗号,然后会出现一个新字段,但我永远无法在表单上的任何输入字段中键入

我怀疑这与wtforms的底层javascript有关,但我不确定如何解决这个问题。我曾考虑放弃使用wtforms,但我确实喜欢它的功能,并且更愿意保留我已经开发的东西


我对网络开发完全陌生,所以我可能错过了一些显而易见的东西。如果您有任何想法,请告诉我。

您可能需要将事件侦听器的
true
作为默认值返回(例如不是逗号)。在您的示例代码中,它看起来像:

$(":input").live("keydown", function() {
    if (event.which===188) {
        $(this).parent().prepend($(this).clone());
        $(this).prev().focus();
        return false;
    } else {
        return true;
    }
});

基本思想是,您正在捕获输入中的所有“keydown”事件,但在原始代码中,只有当keydown事件是逗号时,它才会返回一个值,而所有其他keydown事件都不会由该事件侦听器函数返回任何值

wtforms本机没有任何javascript。验证是用python在服务器端完成的
$(":input").live("keydown", function() {
    if (event.which===188) {
        $(this).parent().prepend($(this).clone());
        $(this).prev().focus();
        return false;
    } else {
        return true;
    }
});