Aligning text and dropdown within a form through tables - html

I know I am wrong in using tables but this seems to be the most viable option.
I am trying to align text and dropdown in the form. The problem is that the text can be one-line or two-liner and it's hard to give a relative height to it when I want to keep both of them same in the same line.
When I put in the padding for the single line for a perfect align, a text with two line-text ruins it. Can I do something relative that works for both one and two line?
HTML
<table>
<tbody>
<tr>
<td style="width: 120px;" class="level-heading">
<div style="position: absolute;">Client Name</div>
</td>
<td style="width: 120px">
<div class="level">
<select name="ctl00$MainContent$cmbClientName" id="MainContent_cmbClientName" style="width:140px;">
<option selected="selected" value="Select One">Select One</option>
</select>
</div>
</td>
<td style="width: 120px;" class="level-heading">
<div style="position: absolute;">Business Segment</div>
</td>
<td style="width: 120px">
<div class="level">
<select name="ctl00$MainContent$cmbBusinessSegment" id="MainContent_cmbBusinessSegment" style="width:140px;">
<option selected="selected" value="Select One">Select One</option>
</select>
</div>
</td>
<td style="width: 120px;" class="level-heading">Business Segment Category
</td>
<td style="width: 130px">
<div class="level">
<select name="ctl00$MainContent$cmbBusinessSubGroup" id="MainContent_cmbBusinessSubGroup" class="level-big" style="width:180px;">
<option selected="selected" value="Select One">Select One</option>
</select>
</div>
</td>
</tr>
<tr>
<td style="width: 120px;" class="level-heading">Experience Test From
</td>
<td style="width: 120px">
<div class="level">
<select name="ctl00$MainContent$cmbFrom" id="MainContent_cmbFrom" style="height:16px;width:140px;">
<option selected="selected" value="Select One">Select One</option>
</select>
</div>
</td>
<td style="width: 120px;" class="level-heading">Experience Test To
</td>
<td style="width: 120px" align="justify">
<div class="level">
<select name="ctl00$MainContent$cmbTo" id="MainContent_cmbTo" style="width:140px;">
<option selected="selected" value="Select One">Select One</option>
</select>
</div>
</td>
<td style="width: 120px">
<span id="MainContent_lblPeriodTo"></span>
</td>
<td style="width: 130px"></td>
</tr>
<tr>
<td colspan="6" style="height: 10px"></td>
</tr>
</tbody>
</table>
CSS
This is the CSS that relates to the issue mentioned above.
.level-heading {
font-size: 12px;
padding-bottom: 12px;
}
.decision-page select {
font-size: 12px;
}
.fullpage-width {
width: 896px;
}

Well, you're asking for a world of frustration on the path you're heading, but let me answer your question:
have a look at this fiddle: http://jsfiddle.net/7tyjx/
First, remove the absolute positioning
<td style="width: 120px;" class="level-heading">
<div>Client Name</div>
</td>
Second, set the vertical alignment on your td's to middle
td {
vertical-align: middle;
}
Third, remove the padding from the .level-heading
.level-heading {
font-size: 12px;
}
In the fiddle I've added some borders so you can see how the alignment is working, and given the td's a exaggerated height for the same reason.
Make life easier- try using class names to identify classes of elements and styles, and then move those styles to your stylesheet -- i.e. you've got a style called .level-heading and then you add an inline-style for width. Move that width out of your markup
.level-heading { width: 120px; }
etc...

Related

How to center these elements?

I want to center horizontally these elements :
<table width="100%" border="0">
<tr>
<td align="center" style="border-width: 0px;"><label >Filière : </label>
<select name="id_filiere" id="id_filiere" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
{foreach $toFilieres as $oFiliere}
<option value="{$oFiliere->id_filiere}">{$oFiliere->lib_filiere}</option>
{/foreach}
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;"><label >Session : </label>
<select name="id_session" id="id_session" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;"><label >Phase : </label>
<select name="id_phase" id="id_phase" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;">
<label >Epreuve : </label>
<select name="id_matiere" id="id_matiere" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;">
<input id="btnRech" type="button" value="Rechercher" />
<a id="Verouillage" href="#popupVerouillage"><input id="btnVerouillage" type="button" value="Verrouiller sujet" /></a>
<a id="ExporterSujet" href="#popupExporterSujet"><input id="btnExporterSujet" type="button" value="Exporter données" /></a>
</td>
</tr>
</table>
At runtime I get this :
As you can see the elements are not very well centered horizontally. So how to center them horizontally ?
The labels are not of same size. So you need to give a fixed width to the left column and align the text to the right. Using the following CSS this can be made perfect. But at the same time, if you want the center to be the separation, then you can give both the <label> and <select>, the same width.
label {display: inline-block; width: 100px; text-align: right;}
select {display: inline-block; width: 150px;}
<table width="100%" border="0">
<tr>
<td align="center" style="border-width: 0px;"><label >Filière : </label>
<select name="id_filiere" id="id_filiere" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
{foreach $toFilieres as $oFiliere}
<option value="{$oFiliere->id_filiere}">{$oFiliere->lib_filiere}</option>
{/foreach}
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;"><label >Session : </label>
<select name="id_session" id="id_session" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;"><label >Phase : </label>
<select name="id_phase" id="id_phase" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;">
<label >Epreuve : </label>
<select name="id_matiere" id="id_matiere" width="100px" tmt:required="true" tmt:message="">
<option value="0">-- Selectionnez --</option>
</select>
</td>
</tr>
<tr>
<td align="center" style="border-width: 0px;">
<input id="btnRech" type="button" value="Rechercher" />
<a id="Verouillage" href="#popupVerouillage"><input id="btnVerouillage" type="button" value="Verrouiller sujet" /></a>
<a id="ExporterSujet" href="#popupExporterSujet"><input id="btnExporterSujet" type="button" value="Exporter données" /></a>
</td>
</tr>
</table>
Preview

Html table fixed column width

I have an html table with 2 columns and 2 rows. I want the columns to stay fixed. So for example,
Row1Text Dropdown
Row2Text Textbox
Instead what is happening is the Dropwdown is shifting over. For example,
Row1Text Dropdown
Row2Text Textbox
This is happening in IE 11 and Chrome Version 35.0.1916.153. However, it works fine in IE9.
Here is the code I am using: http://jsfiddle.net/RnSXA/
.Text {
width:600px;
}
function DropdownChange(value) {
if (value == "2") {
document.getElementById("Row2").style.display = "block";
}
else {
document.getElementById("Row2").style.display = "none";
}
}
<table style="width:100%;">
<tr>
<th align="left" style="width: 15%">
Row1:
</th>
<td style="width: 85%">
<select onchange="DropdownChange(this.value)">
<option value="1">1</option>
<option value="2">2</option>
</select>
</td>
</tr>
<tr id="Row2" style="display:none;">
<th align="left" style="width: 15%">
Row2:
</th>
<td style="width: 85%">
<input type="text" class="Text"/>
</td>
</tr>
</table>
I needed to use 'display:table-row' instead of 'display:block'. This question is answered in this post:
Change your html structure to follow:
html
<table style="width:100%;">
<tr>
<th align="left" style="width: 15%">
Row1:
<select onchange="DropdownChange(this.value)">
<option value="1">1</option>
<option value="2">2</option>
</select>
</th>
<td style="width: 85%"></td>
</tr>
<tr id="Row2" style="display:none;">
<th align="left" style="width: 15%">
Row2:
</th>
<td style="width: 85%">
<input type="text" class="Text"/>
</td>
</tr>
</table>
You have to move your select inside <th>
fiddle

html elements not lining up using colspan

I have a table with 3 rows.
I decided to split each row into 4 columns even though the most TDs a row will have is two.
So, the top row with one TD, has a colspan of 4.
the next row has two TDs, the first with a colspan of 1, the second with a colspan of 3.
the third row has two TDs, each with a colspan of 2.
here is the HTML:
<table class="img">
<tbody>
<tr>
<td colspan="4" class="ttBtn"><hr></td>
</tr>
<tr>
<td colspan='1'>
<select id="moveShifts">
<option val="1">1st Shift</option>
<option val="2">2nd Shift</option>
<option selected="" val="3">3rd Shift</option>
</select>
</td>
<td colspan='3' style='display:block' dept="3">
<select id="moveDepts">
<option val="139">CO-MAIL 1</option>
<option val="140">CO-MAIL 2</option>
<option val="599">FORKLIFT</option>
<option val="665">LEAD TEMP</option>
<option selected="" val="666">OPERATOR</option>
<option val="16">PAMS-CTLMAIL</option>
<option val="463">PAMS-CTLMAIL GEN LAB ** DO NOT USE **</option>
<option val="141">PAMS-CTLPAL</option>
<option val="540">POLY BAG</option>
<option val="485">RECEIVING</option>
</select>
</td>
</tr>
<tr>
<td colspan='2'>
<input type="button" value="Update Punch Record" class="ttBtn" disabled='true' id="ttUpd">
</td>
<td colspan='2'>
<input type="button" value="Delete Punch Record" class="ttBtn" id="ttDel">
</td>
</tr>
</tbody>
</table>
It looks like the second button on the bottom row won't shift left any closer the the right end of the select element above it.
Can anyone tell me what I need to do to fix this?
Here is a link to the code on JSFiddle - http://jsfiddle.net/Joth/TdVAd/2/
Thanks!
Try this below code...
<tr>
<td colspan='4'>
<input type="button" value="Update Punch Record" class="ttBtn" disabled='true' id="ttUpd">
<input type="button" value="Delete Punch Record" class="ttBtn" id="ttDel">
</td>
</tr>
The main problem is 'display:block;' in TD element (if you add border to table, you show it):
<td colspan="3" style='display:table-cell' dept="3">
You can use tag COLGROUP and set width at tag COL, for example:
<table class="img">
<colgroup><col width="25%" /><col width="25%" /><col width="25%" /><col width="25%" /></colgroup>
live demo: http://jsfiddle.net/Magicianred/T9Ru5/4/
Enjoy your code

Text goes in two lines in <select> option

Hello everyone I have a very strange bug - Text in select option goes in two lines see screenshot (Only in IE8 and IE7 ) Does anyone know solution ?
You can access this table on web topairlines.info and choose tab registration (Please open with IE7 or IE8 to see the bug)
http://jsfiddle.net/DVyVj/1/
<table class="form-tabs" width="780" border="0px">
<tr>
<td class="td-right"><span class="red-star">*</span>שם פרטי:</td>
<td><input style="width: 250px; height:30px;" type="text" name="#"></td>
<td class="td-right"><span class="red-star">*</span>שם משפחה:</td>
<td><input style="width: 250px; height:30px;" type="text" name="#"></td>
</tr>
<tr>
<td class="td-right">תחום עסק:</td>
<td><input style="width: 250px; height:30px;" type="text" name="#"></td>
<td class="td-right"><span class="red-star">*</span>דוא"ל:</td>
<td><input style="width: 250px; height:30px;" type="text" name="#"></td>
</tr>
<tr>
<td class="td-right"><span class="red-star">*</span>טלפון:</td>
<td class="td-left">
<div class="select-right-tabs">
<select style="width: 75px; height:34px;">
<option value="1">054</option>
<option value="2">055</option>
<option value="3">056</option>
<option value="4">057</option>
</select>
</div>
<div class="input-left-tabs">
<input style="width: 169px; height:30px;" type="text" name="#">
</div>
</td>
<td class="td-right">נייד:</td>
<td class="td-left">
<div class="select-right-tabs">
<select style="width: 75px; height:34px;">
<option value="1">054</option>
<option value="2">055</option>
<option value="3">056</option>
<option value="4">057</option>
</select>
</div>
<div class="input-left-tabs">
<input style="width: 169px; height:30px;" type="text" name="#">
</div>
</td>
</tr>
<tr>
<td class="td-right">הערות:</td>
<td colspan="3">
<textarea class="textarea-tabs"></textarea>
</td>
</tr>
<tr>
<td class="td-right"></td>
<td class="extra-table-text">
<input type="checkbox" name="#" value="#">מעוניין/ת לקבל בדוא’’ל עדכונים לגבי אירועים
</td>
<td colspan="2" class="last-obligatory td-left">* שדות חובה למילוי</td>
</tr>
<tr>
<td colspan="4" class="td-left">
<button type="button" onclick="switchImg('../img/arrow/png')">שלח</button>
</td>
</tr>
</table>
I think its due to the height is 34px; and if you do not specify explicit style it will take different default style with different line-height;
I think this will do just replace this
<select style="width: 75px; height:30px; line-height:30px;">
I have updated the fiddle, pleases refer fiddle this link,
I hope this will do :)
you might try to add white-space: pre-line; on option elements!

Problems displaying two tables in a div in IE

I'm trying to display two tables inside a container div and it works perfectly in Firefox, and does exactly what I am expecting, but in IE it shifts my second table to appear outside my div. Anyone got any ideas what the issue is that I am running into here? If I put either table in by itself there is no problem, but when I add the second table, regardless of which one come first, I get the problem.
Code for tables:
<div id="contentContainer" style="border: 1px solid black;">
<table id="filterPostingsTable" align="Left" border="0" style="width:100%;">
<tr>
<th>Status</th>
<th>PositionTitle</th>
<th>Classification</th>
<th>Location</th>
<th>Filter</th>
</tr>
<tr>
<td align="center">
<select name="filterStatus" id="filterStatus">
<option selected="selected" value="">Select Status</option>
<option value="Active">Active</option>
<option value="Interviewing">Interviewing</option>
<option value="New">New</option>
</select>
</td>
<td align="center">
<input name="filterPositionTitle" type="text" id="filterPositionTitle" />
</td>
<td align="center">
<select name="922e5a87-18fd-467f-9e7b-f4210fbd93ea" id="922e5a87-18fd-467f-9e7b-f4210fbd93ea">
<option value="0">Select One...</option>
<option value="9c2e6df7-e319-478c-b137-47eff4e4748d">Administrative</option>
<option value="78ce598b-6dad-4434-9bb5-24429c630943">Certified</option>
<option value="c75f18a4-e503-428c-8e23-83d1dac21997">Classified</option>
<option value="77232a27-2c58-4192-bbbf-1b0b493da564">Other</option>
</select>
</td>
<td align="center">
<select name="filterLocation" id="filterLocation">
<option value="Select Location">Select Location</option>
<option value="77c68429-e878-4778-b467-0d684308b188">Desert Foothills</option>
<option value="d226f2a3-02c4-40c5-b784-949c22647081">District Office</option>
</select>
</td>
<td align="center">
<input type="submit" name="filterJobs" value="Filter Postings" id="filterJobs" />
</td>
</tr>
</table>
<table id="jobPostingsTable" class="tablesorter" align="Left" border="0" style="width:100%;float: left">
<thead>
<tr>
<th></th>
<th>Status</th>
<th>Position Title</th>
<th>Classification</th>
<th>Working Location</th>
</tr>
</thead>
<tbody>
<tr id="2a62a993-fc3a-4a43-96b6-fd663a724b6e">
<td>
<input id="apply2a62a993-fc3a-4a43-96b6-fd663a724b6e" type="checkbox" name="apply2a62a993-fc3a-4a43-96b6-fd663a724b6e" />
</td>
<td>New</td>
<td valign="middle">
<span>Systems Analyst</span>
<img src="images/pdf.png" style="border-width:0px;" />
</td>
<td>Classified</td>
<td>District Office</td>
</tr>
</tbody>
</table>
</div>
Applicable CSS is as follows:
#contentContainer {
background-color:#FFFFFF;
border:1px solid #000000;
float:left;
height:auto;
margin:0;
width:1000px;
}
All tables are set to width of 100%. The buttons in the image don't really matter as they don't seem to affect the table problem whether they are there or not. Usually this sort of thing works just fine, but in IE 7 it is now rendering as follows:
If you want to float your tables, they will need a width in pixels, not percent.