web2py: как добавить JavaScript в форму Web2py Crud? - PullRequest
2 голосов
/ 23 декабря 2010

Работа с Web2Py. Я пытаюсь прикрепить некоторый javascript либо к полю (onchange), либо к форме (onsubmit), но не вижу абсолютно никакого способа передать такой аргумент в crud.create или form.custom.widget.

У кого-нибудь есть идея?

Ответы [ 2 ]

4 голосов
/ 23 декабря 2010

Конечно, есть способ.Надлежащим способом является опрос людей из списка рассылки web2py, которые знают, как это делать, в отличие от пользователей, переполняющих общий стек, которые угадают неправильный ответ.: -)

В любом случае, предположим, что у вас есть:

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).

0 голосов
/ 23 декабря 2010

Я не верю, что есть способ сделать это напрямую.Один из вариантов - просто манипулировать сгенерированным 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}}

И вы хотите добавить обработчик onblur в поле ввода имени(добавлено в представление):

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