web2py:如何在Web2py Crud表单中添加JavaScript?

2 投票
2 回答
2982 浏览
提问于 2025-04-16 08:57

我在使用Web2Py这个框架。现在我想在一个字段(比如说,当字段内容改变时)或者在整个表单提交的时候,添加一些JavaScript代码。但是我发现根本没有办法把这样的参数传递给crud.create或者form.custom.widget。

有没有人知道该怎么做?

2 个回答

0

我觉得没有直接的方法可以做到这一点。一个选择是直接修改web2py生成的HTML,因为它其实就是一串字符串。更简单的方法,我认为是使用jQuery的$(document).ready()函数来绑定事件。

假设你有一个数据库表(这些内容都是从web2py的文档中拿来的):

db.define_table('image',
    Field('name'),
    Field('file', 'upload'))

还有一个表单:

def upload_image():
    return dict(form=crud.create(db.image))

以最简单的方式嵌入到视图中:

{{=form}}

现在你想在名字输入框上添加一个失去焦点的事件处理器(这个要加到视图里):

<script type="text/javascript">
$(document).ready(function(){
    $("#image_name").blur(function(){
      // do something with image name loses focus...
    });
});
</script>
4

当然有办法。最好的方式是去问那些在web2py邮件列表上的人,他们知道怎么做,而不是问那些在Stack Overflow上随便猜答案的用户。:-)

无论如何,假设你有:

db.define_table('image',
    Field('name'),
    Field('file', 'upload'))

你可以这样做:

def upload_image():
    form=crud.create(db.image)
    form.element(name='file')['_onchange']='... your js here ...'
    form.element('form')['_onsubmit']='... your js here ...'
    return dict(form=form)

这个元素使用的是css3/jQuery的语法(但它是在python中被处理的)。

撰写回答