【问题标题】:HTML form table acting stubbornHTML 表格表现顽固
【发布时间】:2018-03-15 22:28:34
【问题描述】:

我尝试设置输入、td、tr、table、div 和所有其他可用选项的样式。这些都是在 Google 上找到的建议,所以不要怪我。

我正在努力修复这张桌子,但它只是不想看起来像我想要的样子。

我已经使用<td style="width:100%";>, <td style="width:100px";>, <td width="100%">, <td width="100px"> 并继续......

第一张图是它的样子,第二张是我需要和想要的样子:

这里是代码(好看不奖励):

<div class="mail" style="width:600px">
<form onSubmit="return checkrequired(this)" action="includes/mail.php" method="POST">
<table border="0" style="width:100%">
<tr><td><strong>First name: </strong></td><td><input tabindex="1" type="text" name="requiredfirstname" maxlength="30"/></td><td> *</td></tr>
<tr><td><strong>Last name: </strong></td><td><input tabindex="2" type="text" name="requiredlastname" maxlength="30"/></td><td> *</td></tr>
<tr><td><strong>Shipping address: </strong></td><td><input tabindex="3" type="text" name="requiredshippingaddress" maxlength="30"/></td><td> *</td></tr>
<tr><td><strong>Shipping address 2: </strong></td><td><input tabindex="4" type="text" name="shippingaddress_2" maxlength="30"/></td></tr>
<tr><td><strong>City: </strong></td><td><input type="text" name="requiredcity" value="<?= $town ?>" maxlength="30"/><br /></td><td> *</td></tr>
<tr><td><strong>State: </strong></td><td><select name="state">
  <option value="<?= $state ?>"><?= $state ?></option>
  <option value="Alabama">Alabama</option>
  <option value="Alaska">Alaska</option>
  <option value="Arizona">Arizona</option>
  <option value="Arkansas">Arkansas</option>
  <option value="California">California</option>
  <option value="Colorado">Colorado</option>
  <option value="Connecticut">Connecticut</option>
  <option value="Delaware">Delaware</option>
  <option value="Florida">Florida</option>
  <option value="Georgia">Georgia</option>
  <option value="Hawaii">Hawaii</option>
  <option value="Idaho">Idaho</option>
  <option value="Illinois">Illinois</option>
  <option value="Indiana">Indiana</option>
  <option value="Iowa">Iowa</option>
  <option value="Kansas">Kansas</option>
  <option value="Kentucky">Kentucky</option>
  <option value="Louisiana">Louisiana</option>
  <option value="Maine">Maine</option>
  <option value="Maryland">Maryland</option>
  <option value="Massachusetts">Massachusetts</option>
  <option value="Michigan">Michigan</option>
  <option value="Minnesota">Minnesota</option>
  <option value="Mississippi">Mississippi</option>
  <option value="Missouri">Missouri</option>
  <option value="Montana">Montana</option>
  <option value="Nebraska">Nebraska</option>
  <option value="Nevada">Nevada</option>
  <option value="New Hampshire">New Hampshire</option>
  <option value="New Jersey">New Jersey</option>
  <option value="New Mexico">New Mexico</option>
  <option value="New York">New York</option>
  <option value="North Carolina">North Carolina</option>
  <option value="North Dakota">North Dakota</option>
  <option value="Ohio">Ohio</option>
  <option value="Oklahoma">Oklahoma</option>
  <option value="Oregon">Oregon</option>
  <option value="Pennsylvania">Pennsylvania</option>
  <option value="Rhode Island">Rhode Island</option>
  <option value="South Carolina">South Carolina</option>
  <option value="South Dakota">South Dakota</option>
  <option value="Tennessee">Tennessee</option>
  <option value="Texas">Texas</option>
  <option value="Utah">Utah</option>
  <option value="Vermont">Vermont</option>
  <option value="Virginia">Virginia</option>
  <option value="Washington">Washington</option>
  <option value="West Virginia">West Virginia</option>
  <option value="Wisconsin">Wisconsin</option>
  <option value="Wyoming">Wyoming</option>
</select></td></tr>
<tr><td><strong>Country: </strong></td><td> 
<select name="country">
  <option value="<?= $country ?>"><?= $country ?></option>
  <option value="US">United States</option>
  <option value="Canada">Canada</option>
</select></td></tr>
<tr><td><strong>Postal code: </strong></td><td><input type="text" name="requiredpostalcode" value="<?= $record->postal_code; ?>" maxlength="9"/></td><td> *</td></tr>
<tr><td><strong>Phone number: </strong></td><td><input type="text" name="areacode" value="<?= $record->area_code; ?>" maxlength="3"/>
<input tabindex="5" type="text" name="phonedigit3" maxlength="3"/>
<input tabindex="6" type="text" name="phonedigit4" maxlength="4"/></td></tr>
<tr><td><strong>E-mail: </strong></td><td><input tabindex="7" type="text" name="requiredemail" maxlength="30"/></td><td> *</td></tr>
<tr><td><strong>Message: </strong></td><td><textarea tabindex="8 "name="message" maxlength="250"></textarea></td></tr>
<tr><td><input tabindex="9" type="submit" value="Send"></td></tr>
</table>
</form>

【问题讨论】:

  • 首先,您的 tr 的 td 计数不相等。您应该使用 colspan 属性。 check out this
  • 最后,给自己找一个关于如何创建表单的教程。您不使用&lt;table&gt; 创建表单。

标签: html forms html-table


【解决方案1】:

我不确定它在其他浏览器中的效果如何,但这在 chrome 中看起来不错:

<tr>
<td><strong>Phone number: </strong></td>
<td>
<input type="text" name="areacode" value="<?= $record->area_code; ?>" maxlength="3" style="width:30px;"/>
<input tabindex="5" type="text" name="phonedigit3" maxlength="3" style="width:30px;"/>
<input tabindex="6" type="text" name="phonedigit4" maxlength="4" style="width:75px;" />
</td>
</tr>

请注意,要在不同的浏览器中保持一致,您可能需要明确设置所有输入的宽度,例如在您的 css 中:

input[type="text"], select {
    width: 150px;
}

【讨论】:

  • 这看起来很有希望,非常感谢您的帮助。我试过这个完全相同的东西,但它在我的浏览器上输出不好。但是我将您的代码复制/粘贴到 jfiddle 中并且效果很好。
  • @F4LLCON 显然您没有看到我在评论中包含的demo。您可以对其进行内联样式设置,也可以创建一个类以应用于这些输入字段。
  • @FreshPrinceOfSO 你的 DEMO 不正确,因为单词和字段之间的间距和 * 就像月球到地球的距离
  • 你不知道如何使用表格不是我的错 (style="width:100%")。学习 HTML 的基础知识。一旦你这样做了,你将停止使用表格。
  • @FreshPrinceOfSO 它的意思是与我回答前半部分的电话号码输入中的元素样式相结合,以实现跨浏览器/平台的一致性。 jsfiddle.net/mnahkies/SFznk
【解决方案2】:

不要为 TD 元素设置样式,为实际控件设置样式(Input、Select 等)

【讨论】:

  • 能否请您在输入等样式的地方 JFiddle 代码?然后我们可以看到什么是有效的,什么是不真实的?
【解决方案3】:

style 属性必须应用于input;不是表格单元格。

<input style="width: ...

【讨论】:

  • 好吧,去谷歌上阅读,他们说它必须在 中,就像我发布它的方式一样。我试过输入法还是不行。你认为我会不先测试就发布这个问题?
  • 考虑到这里的问题质量很糟糕,我认为没有人知道任何事情。显然你在谷歌上搜索错误的东西。除非 每个 输入字段都有自己的单元格,否则不要将其应用于表格单元格。即使这样做,输入字段也会溢出。该属性必须应用于输入。 See it in action
  • 考虑到不是每个人都研究过在这里提出问题,人们必须帮助解决问题,而不是说问题质量不是 A+ 批准..
  • 显然你不会在没有先测试的情况下发布这个问题。
  • 看先生'完美'去其他地方嗡嗡声。我在发布之前测试了它,它没有工作。看来你也像代码一样顽固
【解决方案4】:

目前,从上面的来源来看,表格的宽度为“100 %”,这意味着所有可用的水平空间。

TD 没有任何宽度预设,因此“均匀”分布,每个 1/3 或 33%。

这是可能的,因为内部元素(输入和文本节点)也没有任何宽度预设。

您可以给 TD 一个宽度,但这不会改变输入的任何内容,它们保持在大约 30 个字符的“默认”值。

实现你想要的最简单的方法:

1.) 保持原样。 2.) 根据您的需要明确设置输入字段和“*”文本节点的宽度

#firstname {
width: 135px;
}


 <tr><td><strong>First name: </strong></td><td><input tabindex="1" type="text" 
name="requiredfirstname" id="firstname" maxlength="30"/></td><td> *</td></tr>

【讨论】:

    【解决方案5】:

    您可以通过为电话号码使用单个 &lt;input type=tel&gt; 字段来避免此问题。将其分成三个字段不利于可用性(例如,用户不能方便地剪切和粘贴他的电话号码)。

    如果您继续使用三个字段作为电话号码,则需要设置这些字段的宽度,以使它们的组合宽度加上它们之间的任何间距等于同一列其他单元格中的字段宽度。这是可能的,但很麻烦,并且会使布局更加僵化(像素宽度)。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签