webForumDet fria alternativet

problem med validerings funktion

8 svar · 349 visningar · startad av firstchoice

firstchoiceMedlem sedan okt. 2001605 inlägg
#1

Något är fel i koden nedan.
första gången funkar det fint
Andra gången så går den in i en loop och kommer inte ur...
Tanken är att varje gång du lägger till ett värde i en select box skall funktionen först gå igenom det som redan är inlagt för att se till att inga dubbletter sparas.

function addOption(optText,optValue,frm_name,lstBox_name)
	{	
	if (document.frm.date.value != '') {
	var Box = document.frm.Select1;
	var i = 0;
	var test = true;
	while(i<Box.options.length)
		{
		if (Box.options[i].value = optValue)
		test = false;
		else
		i++;
		}
		if (test = true) {
		var newOption = new Option(optText,optValue);
		var Box = document.forms[frm_name].elements[lstBox_name];
		Box.options[Box.options.length] = newOption; }
		else {
		alert('fel'); }
		}
	else {
	alert('You have to select a date!');}
	}
Peter SMedlem sedan dec. 20025 484 inlägg
#2

Börja med att i denna

 if (Box.options[i].value = optValue)

...ändra så att du testar för lika med (==) i stället för att utföra en tilldelning.

voigtann1Medlem sedan juni 20018 810 inlägg
#3
function addOption(optText,optValue,frm_name,lstBox_name) {	
	if (document.frm.date.value != '') {
		var Box = document.frm.Select1;
		var i = 0;
		var test = true;
		while(i<Box.options.length) {
			if (Box.options[i].value = optValue) {test = false; break;}
			i++;
		}
		if (test) {
			var newOption = new Option(optText,optValue);
			var Box = document.forms[frm_name].elements[lstBox_name];
			Box.options[Box.options.length] = newOption;
		}
		else {
			alert('fel');
		}
	else {
		alert('You have to select a date!');
	}
}

Lite ändringar, if frågan skall ha == och inte =,
sen om den hittar värdet så hoppar vi ur while med break;

firstchoiceMedlem sedan okt. 2001605 inlägg
#4

får syntaxfel på en rad när jag laddar sidan
kan det fattas en "}" ?

Peter SMedlem sedan dec. 20025 484 inlägg
#5

Ja, det saknas en } innan den sista "else". Har du ändrat = till == i samtliga if-satser?

firstchoiceMedlem sedan okt. 2001605 inlägg
#6

Peter S skrev:

Ja, det saknas en } innan den sista "else". Har du ändrat = till == i samtliga if-satser?

har fixat, men nu funkar inget =(

voigtann1Medlem sedan juni 20018 810 inlägg
#7

Kan man få lite HTML kod så man kan testa ?

firstchoiceMedlem sedan okt. 2001605 inlägg
#8
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<script type="text/javascript">
function addOption(optText,optValue,frm_name,lstBox_name) {	
	if (document.frm.date.value != '') {
		var Box = document.frm.Select1;
		var i = 0;
		var test = true;
		while(1<Box.options.length) {
			if (Box.options[i].value == optValue) {test = false; break;}
			i++;
		}
		if (test) {
			var newOption = new Option(optText,optValue);
			var Box = document.forms[frm_name].elements[lstBox_name];
			Box.options[Box.options.length] == newOption;
		}
		else {
			alert('fel');
		} 
		}
	else {
		alert('You have to select a date!');
	}
}
   			
   			function validateForm()
			{
					
				if (document.frm.Select1.options[0] != null){
					var Box = document.frm.Select1;
					var i = 0;
					while(i<Box.options.length)
					{
						Box.options[i].selected = true;
						i++;
					}
					return true;										 
				}
				else {
					alert('You have to Add a Date!');
					return false;
				}
			}		
		</script>
	</head>
	
	<body>
	    
	<form action="test.asp" method="post" name="frm" onSubmit="return validateForm()">
	
		<table style="width: 500" border="0">
			<tr>
				<td class="style1" valign="top" style="width: 210px"><span lang="sv">Date: </span> <input type="text" name="date" /></td>
				<td class="style1" valign="top" style="width: 81px"><span lang="sv"> 
				<button name="fsdsdf" onClick="addOption(document.frm.date.value,document.frm.date.value,'frm','Select1');">Add -&gt;</button> <br />
				<br />
				<button name="Submit4" onclick="RemoveOption('frm','Select1');">
<- Remove</button> </span></td>
				<td style="width: 390px">
				<select name="Select1" style="width: 265px" size="5" multiple="multiple">
			</select></td>
			</tr>
			<tr>
				<td style="width: 210px">&nbsp;</td>
				<td style="width: 81px">
				<input name="Submit1" type="submit" value="Next" /></td>
				<td style="width: 390px">
				&nbsp;</td>
			</tr>
		</table>
	
</form>
			
    </body>
</html>
voigtann1Medlem sedan juni 20018 810 inlägg
#9
function addOption(optText,optValue,frm_name,lstBox_name)
{	
	if (document.frm.date.value != '')
	{
		var Box = document.frm.Select1;
		var i = 0;
		var test = true;
		while(i<Box.options.length)
		{
			if (Box.options[i].value == optValue) {test = false; break;}
			i++;
		}
		if (test)
		{
			var newOption = new Option(optText,optValue);
			var Box = document.forms[frm_name].elements[lstBox_name];
			Box.options[Box.options.length] = newOption;
		}
		else
		{
			alert('fel');
		} 
	}
	else
	{
		alert('You have to select a date!');
	}
	return false;
}

och på onclick:

return addOption(document.frm.date.value,document.frm.date.value,'frm','Select1')
130 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
127 ms — hämta tråd, inlägg och bilagor (db)