gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:45:25 26 4
gpt4 key购买 nike

我正在创建一个简单的 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>

其中 _formhelpers.html 可以在 Flask 文档中找到:http://flask.pocoo.org/docs/0.12/patterns/wtforms/ 。 (FIELDS 是通过 Flask 处理程序传入的字段名称列表)

此后我一直在尝试添加这样的功能:当在输入字段中输入逗号时,逗号将被抑制,而是弹出一个附加的输入字段。我能够使用以下 jQuery 脚本在不使用 jinja2 或 wtforms 的测试 html 上完成这项工作:

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

但是,当我将此脚本引入我的表单时,如下所示:

<!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>

一切似乎都有效,除了一个主要问题,表单的输入字段中没有出现任何字符。我可以输入一个逗号,然后会出现一个新字段,但我永远无法在表单上的任何输入字段中输入内容。

我怀疑这与 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 事件都不会由该事件返回任何内容监听器功能。

关于javascript - 添加 jQuery 脚本后输入字段(使用 wtforms 创建)中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com