如何使用jQuery访问WTForm

时间:2018-09-03 19:28:26

标签: python jquery flask flask-wtforms

我想寻求有关访问WTForm字段的帮助:

我有以下表格:

class model_bolt_InputForm(FlaskForm):

    # Bolt Inputs
    bolt_size =                 SelectField('Bolt size [mm]', choices=[('M6', 'M6'),('M8', 'M8'),('M10', 'M10'), ('M12', 'M12'), ('M16', 'M16'), ('M20', 'M20'), ('M24', 'M24'), ('M30', 'M30'), ('M36', 'M36'), ('M42', 'M42'), ('M48', 'M48'), ('M56', 'M56'), ('M64', 'M64')], default='M12')
    bolt_grade =                SelectField('Bolt grade [-]', choices=[('4.6','4.6'), ('4.8','4.8'), ('5.6','5.6'), ('5.8','5.8'), ('6.8','6.8'), ('8.8','8.8'), ('9.8','9.8'), ('10.9','10.9'), ('12.9','12.9')], default='8.8')
    bolt_preload =              FloatField( label=' Bolt preload [N]', default=32360)
    friction_coefficient =      FloatField( label=' Thread friction coefficient [-]', default=0.2)
    preload_type =              RadioField( label='Select preload type', choices=[(1,'Apply torque'),(2,'Apply Axial preload'),(3,'Ratio of total Tensile Strength')], default=2)

我的html:

<button id="btn1">Button 1</button>
<p class="para1">sdiuc siduch siudch siudch siudhc siudch siduch </p>

<script>

        $(document).ready(function(){

            $('#btn1').click(function(){

                $('.para1').toggle();
                alert(**form.bolt_preload.data**);

            });

        });

</script>

如果我单击按钮,该段落将隐藏,但是尝试打印bolt_preload字段的值时出现错误。有人可以给我提示如何做吗?

在单击时更改“归档”中的值而不是打印该值吗?

谢谢 雅各布

1 个答案:

答案 0 :(得分:0)

您无法以尝试的方式访问模板中的表单数据。如果您正在使用javascript从表单获取数据,那么。如果您没有为表单元素指定ID,则WTForm将使用变量名称作为id属性以及HTML输入的name属性来呈现它们。您可以使用它来使用javascript / jquery通过id选择该输入 您的jquery代码应如下所示。

<script>

        $(document).ready(function(){

            $('#btn1').click(function(){

                $('.para1').toggle();
                var boltPreloadInput = $('#bolt_preload');
                alert(boldPreloadInput.val());

            });

        });

</script>

使用WTForms时,表单元素在页面加载时呈现为HTML输入。加载页面后,您将无法像尝试那样访问客户端的表单数据。在未首先将数据发送到服务器的情况下,与点击事件上的表单进行交互的唯一方法是使用javascript。