【发布时间】:2017-05-22 12:14:20
【问题描述】:
我有一个动态创建的表单,这就是 jquery 的原因(它更容易)。我试图弄清楚为什么输入字段的格式不正确。
我刚刚改变了它的格式化方式,从在表格中,变成了一种更容易引导的方式,这样,只有我放置图标的输入字段才能正常工作。当我在表中有相同的字段时,jQuery 可以正常工作。
我做错了什么?
还有一个jsfiddle。
这是表格的代表部分:
<div class="container">
<div class="form-group row">
<label for="first_name" class="sr-only">*
<label for="id_first_name">First name:</label>
</label>
<div class="input-group">
<input type="text" name="first_name" required maxlength="50" required id="id_first_name">
</div>
</div>
<div class="form-group row">
<label for="last_name" class="sr-only">*
<label for="id_last_name">Last name:</label>
</label>
<div class="input-group">
<input type="text" name="last_name" required maxlength="50" required id="id_last_name">
</div>
</div>
<div class="form-group row">
<label for="phone" class="sr-only">*
<label for="id_phone">Phone:</label>
</label>
<div class="input-group">
<input id="id_phone" name="phone" type="tel" required />
</div>
</div>
</div>
由于我的字段是动态创建的,而且它们的属性需要做更多的工作,所以我使用 jQuery 将 form-control 类添加到输入中,以及其他一些小事。
代码如下:
$("input[type='email']").parent('div:first').prepend('<div class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></div>');
$("input[type='tel']").parent('div:first').prepend('<div class="input-group-addon"><span class="glyphicon glyphicon-earphone"></span></div>');
$('input').addClass('form-control').each(function () {
var $this = $(this);
var $label = $('label[for="' + $this.attr('id') + '"]');
$this.attr('placeholder', $label.text().slice(0, -1));
});
$('select').addClass('form-control');
【问题讨论】:
-
这是因为您将
text字段包裹在<div class="input-group">中,但没有像使用 电子邮件 和 那样添加任何.input-group-addon电话 字段。您是否能够更改 HTML 结构以删除输入组 div,因为您也可以使用 jQuery 将它们简单地添加到需要它们的输入中。 (此外,您不能将标签嵌套在另一个标签中,这是无效的:请参阅question 了解更多信息)。
标签: jquery css twitter-bootstrap