PDA

View Full Version : how to validate mutiple rows using the same input text


Han84
09-24-03, 08:28 PM
Hi everyone,
I have a problem validating mutiple results using the same input text.
For example,
I use a for loop to display 5 rows of input text
User is require to key in a value in each of the 5 rows
But when i try to validate the 5 rows to check for empty field
The javascript is only able to validate only 1 row of result
Even if it is 10 rows, it only can validate 1 row of result
In other word, the javascript is only able to validate one row of result at any
one time.
How can i validate all the rows using javascript?

Below is the code that i am doing



<form name="main_form" method="post" target="_blank" action="process_coa.asp" onsubmit="javascript:return checkform(this);">


<% if product = "DBE" then %>

<tr>
<td align=center width=100 class=tableborder>
<font class="font"><b>MFG<br>LOT#</b></font>
</td>

<td align=center width=100 class=tableborder style="border-left:0px">
<font class="font"><b>Loading<br>Date</b></font>
</td>

<td align=center width=100 class=tableborder style="border-left:0px">
<font class="font"><b>Vessel Name</b></font>
</td>

<td align=center width=100 class=tableborder style="border-left:0px">
<font class="font"><b>Voyage</b></font>
</td>

<td align=center width=100 class=tableborder style="border-left:0px">
<font class="font"><b>Tank No</b></font>
</td>

<td align=center width=100 class=tableborder style="border-left:0px">
<font class="font"><b>Quantity<br>Tonne</b></font>
</td>
</tr>

<%
tempinput1=(Request.Form("lotno_arraystring"))
lotno_array=split(tempinput1,", ")
%>


<%
'================================================= ============================
' Display the selected lot/lots
'================================================= ============================
for each x in lotno_array

'retrieve data from sql

set rs4 = server.createobject("ADODB.recordset")
sql4 = "select * from dbelabresult where lotno = '" & trim(x) & "'"
rs4.open sql4, cn, 3, 3, 1 %>

<tr>
<!------------ display lot no -------->
<td align=center class=tableborder style="border-top:0px">
<font class="font"><b><%=x%></b></font>
</td>


<!------------ display loading date -------->
<td align=center class=tableborder style="border-left:0px;border-top:0px">
<input type=text readonly=true class="mediumfont" style="width:90;border:0;text-align:center;" name="loaddate<%=trim(x)%>">
<a href="javascript:show_calendar('main_form.loaddate<%=trim(x)%>');" onmouseover="window.status='Date Picker';return true;" onmouseout="window.status='';return true;">
<img style="border:0px;position:relative;left:-2;top:2;" src="../images/cal.gif">
</a>
</td>

<!------------ display vesselName -------->
<td align=center class=tableborder style="border-left:0px;border-top:0px">
<input type=text name="vesselname<%=x%>" class="mediumfont" style="width:100;border:0;">
</td>


<!------------ display voyage -------->
<td align=center class=tableborder style="border-left:0px;border-top:0px">
<input type=text name="voyage<%=x%>" class="mediumfont" style="width:100;border:0;">
</td>

<!------------ display tankno -------->
<td align=center class=tableborder style="border-left:0px;border-top:0px">
<input type=text name="tankno<%=x%>" class="mediumfont" style="width:100;border:0;">
</td>

<!------------ display weight -------->
<td align=center class=tableborder style="border-left:0px;border-top:0px">
<input type=text name="quantitytonne<%=x%>" class="mediumfont" style="width:100;border:0;" >
</td>

<!------------ display max -------->
<td align=center class=tableborder style="border:0;">
<font color=navy class="font">&nbsp;&nbsp;Max: <%=rs4("quantity")%></font>
</td>
</tr>

<!----------------------- Verification for DBE ------------------------------->
<script language="javascript">

function checkform()
{
var error_message;

error_message = "Please complete the following fields\n";


if (document.main_form.loaddate<%=x%>.value == "")
{
error_message = error_message + "\n - loaddate";
}
if (document.main_form.tankno<%=x%>.value =="")
{
error_message = error_message + "\n - tankno";
}
if (document.main_form.vesselname<%=x%>.value == "")
{
error_message = error_message + "\n - vessel name";
}
if (document.main_form.voyage<%=x%>.value == "")
{
error_message = error_message + "\n - voyage";
}
if (document.main_form.quantitytonne<%=x%>.value == "" )
{
error_message = error_message + "\n - weight";
}
if (parseInt(document.main_form.quantitytonne<%=x%>.value ) != document.main_form.quantitytonne<%=x%>.value )
{

error_message = error_message + "\n - Enter number for weight";
}
if (error_message == "Please complete the following fields\n")
{
return true;
}
else
{
alert (error_message);
return false;
}

}
</script>
<% rs4.close() : set rs4 = nothing %>


<% next %>

<% end if %>

Yeroon
08-02-07, 10:14 AM
Hi,

It is only validating the first row, because all 5 function get the same name:

function checkform()
{
........ check row 1
}
function checkform()
{
........ check row 2
}
When you submit the form, you run function checkform(). Javascript will allways take the top function, so always row 1.

You need to change your javascript to loop through the rows and take it out of your recordset loop, so it doesnt get added 5 times. Simple example:

function checkform()
{
var error_message;

error_message = "Please complete the following fields\n";

for(var i=1;i ==5;i++)
{
var loaddate = document.main_form.loaddate + i;
if(loaddate.value == "")
{
error_message = error_message + "\n - loaddate is missing for record no." + i;
}
}
if (error_message == "Please complete the following fields\n")
{
return true;
}
else
{
alert (error_message);
return false;
}
}