WTForms-Javascript:将 onclick 传递到 WTF 字段

mac*_*ump 4 html javascript forms flask wtforms

有没有办法将“onclick”传递到 WTForm 字段?我想根据是否选中 WTF 复选框来启用/禁用某个字段。但 WTForms 中的 HTML 不会创建或具有“onclick”参数。

我有一个表格:

class test(Form):
    checkbox=BooleanField('Checkbox')
    required=TextField('Required if checked')
Run Code Online (Sandbox Code Playgroud)

我有 JS:

function disablefld(){
  cb=document.getElementById('checkbox').checked;
  document.getElementById('required').disabled=!cb;
  }
Run Code Online (Sandbox Code Playgroud)

为该复选框生成的 HTML WTForms 为: <input id="checkbox" name="checkbox" type="checkbox" value="y">。它不起作用,因为onclick它不存在。

我已经尝试过checkbox=BooleanField('Checkbox', onclick="disablefld()"),但这是一个意想不到的争论。这是可能的还是我应该用纯 html 制作表单?

Joo*_*ost 7

您需要在渲染表单时传递额外的参数。

{% block content %}
{{ form.checkbox(onchange="doStuff()") }}
{{ form.required() }}
<script>
function doStuff(){
  var checked = document.getElementById('checkbox').checked
  if (checked){
    document.getElementById('required').disabled = true
  } else {
    document.getElementById('required').disabled = false
  }
}
doStuff()
</script>

{% endblock %}
Run Code Online (Sandbox Code Playgroud)