【发布时间】:2012-12-11 21:20:50
【问题描述】:
订单输入表单是从数据库中定义的字段创建的。 每个字段都包含文本标题和输入元素。
输入元素是输入类型=文本、复选框或选择元素。 如果也可以是 jquery ui 自动完成或右侧包含下拉按钮的日期选择器。 使用了 JQuery UI。
在输出中输入元素未对齐。看起来很乱:
如何提高此布局的可读性?
如何垂直对齐输入元素的左侧,以便它们从同一列开始? 如果调整浏览器窗口的大小,新列应该会自动出现或删除。
也许有一些神奇的 css 或 jquery ui 功能允许这样做? 也可以使所有字段宽度相同。每个输入元素的最小宽度 在数据库中定义。渲染宽度可以稍大一些。对于字幕,可以进行两遍渲染:在第一遍中找到字幕中的最大字符数并计算每个字幕的宽度。
使用的html是:
<form id='_form' class='form-fields'>
<div class='form-field'>
<label class='form-label' for='Klient0_nimi'><u>Customer</u></label>
<span id='span_Klient0_nimi'><input id='Klient0_nimi' name='Klient0_nimi' style='width:100px' class='ui-widget-content ui-corner-all' maxlength='80' lookup='Klient' value='Brad Abrams' ></input>
<button type='button' class='form-combobutton' tabindex=-1 ></button>
</span>
</div>
<div class='form-field'>
<label class='form-label' for='Tasudok'>Number</label>
<input class='ui-widget-content ui-corner-all' id='Tasudok' name='Tasudok' value='798' style='width:100px' maxlength='25' />
</div>
<div class='form-field'>
<label class='form-label' for='Kuupaev'>Date</label>
<input maxlength=10 size=10 class='ui-widget-content ui-corner-all' id='Kuupaev' name='Kuupaev' value='1/26/2012' />
</div>
<div class='form-field'>
<label class='form-label' for='Maksetin1_tingimus'><u >Condition</u></label>
<span><select id='Maksetin1_tingimus' name='Maksetin1_tingimus' class='ui-widget-content ui-corner-all' style='width:100px'
lookup='Maksetin' value='10' >
<option value=''></option>
<option value='10'>10 days</option>
</select>
</span>
</div>
<div class='form-field'>
<label class='form-label' for='Eimuuda'>No change</label>
<input type='hidden' value='false' name='Eimuuda' />
<input type='checkbox' id='Eimuuda' name='Eimuuda'/>
</div>
<div class='form-field'>
<label class='form-label' for='Doksumma'>Total</label><input style='text-align:right' id='Doksumma' name='Doksumma' disabled='disabled' class='jqgrid-readonlycolumn' readonly='readonly' tabindex='-1' value='0.00' style='width:100px' maxlength='0' />
</div>
</form>
【问题讨论】:
-
您可以使用 CSS 将固定宽度分配给表单字段类。这应该可以解决问题
-
我希望表单域 div 中的输入和选择元素左对齐。为表单字段设置固定宽度确实允许这样做,因为每个表单字段的标题宽度都不同。另外我不知道如何从标题文本中计算最大宽度。我是否应该将最大标题长度乘以一些神奇的常数蚂蚁将其用作 px 值。
-
@Andrus 我更新了我的答案以处理水平调整大小。检查更新的html。现在表单是 2up(4 列),但您可以使用 3up(6 列)或更多来做同样的事情。
-
谢谢。看起来最好的方法是允许任何数字或列以 1 为增量: 1,2,3,4,5,6,7, 8 或 9 。似乎在您的代码中使用这个 dis 只能包含单个表格单元格。这使得表格元素的使用变得无用,并且可以将其删除,从而导致有问题的 html。如何避免硬编码标题宽度 100 像素?
标签: javascript html css jquery-ui