我该如何创建一个隐藏的文本输入框?

0 投票
1 回答
4312 浏览
提问于 2025-04-17 14:45

我正在写一个自定义的表单,里面包含:

  • 多个布尔类型的复选框和单选按钮。

  • 还有一个隐藏的文本输入框。

  • 如果用户点击“其他”按钮,文本输入框就会被启用,用户可以手动输入内容。

  • 如果用户取消选择“其他”按钮,文本输入框就会被禁用。

下面是绘制这个表单的控件函数(针对多个复选框):

def select_multi_other_checkbox(field, ul_class='', **kwargs):
    """check wtforms.widgets.core to see what is going on"""
    kwargs.setdefault('type', 'checkbox')
    field_id = kwargs.pop('id', field.id)
    html = [u'<ul %s>' % html_params(id=field_id, class_=ul_class)]
    for value, label, checked in field.iter_choices():
        choice_id = u'%s-%s' % (field_id, value)
        options = dict(kwargs, name=field.name, value=value, id=choice_id)
        if checked:
            options['checked'] = 'checked'
        html.append(u'<li><input %s /> ' % html_params(**options))
        html.append(u'<label %s>%s</label></li>' % (html_params(**options), cgi.escape(text_type(label))))

    else:
        choice_id = u'%s-%s' %(field_id, u'other')
        options = dict(kwargs, name=field.name, value='', id = choice_id)
        options['type'] = 'text'
        html.append(u'<input %s > ' % (html_params(**options)))

    html.append(u'</ul>')
    cPickle.dump(html, open("htmltest.p", "wb"))
    return u''.join(html)

在这段代码中,html.append(u'<input %s > ' % (html_params(**options))) 是添加文本输入框的地方。(注意,options['type'] = 'text' 表示 <input> 标签的 type="text" 属性)问题是,我该如何让这个文本输入框不是 type="hidden",以便我可以通过 jQuery 后续显示它呢?

1 个回答

1

添加一些样式来隐藏它:

<input type="text" style="display:none" id="myhiddentextfield" />

然后用jQuery来显示它:

$('#myhiddentextfield').show();

撰写回答