webForumDet fria alternativet

document.location.Reload ()

18 svar · 469 visningar · startad av Ivar

IvarMedlem sedan aug. 2002218 inlägg
#1

Hej!

För att kola bild bredden och höjden i klientdatorn använder jag denna JavaScriptkoden och det funkar bra, då får man en alert meddelande och då måste man trycka OK för att bläddra igen efter passande bildstorlek osv. Vad jag vill uppnå är att med document.location.reload() ladda om bara den fält som man bläddrar efter fil men som det är nu laddas om hela formuläret men hur fixar jag det?

Kod:
<script language="JavaScript">

function imgSize(obj, w, h){
	var imgpath = obj.value;
	var imgTemp = new Image();
	imgTemp.src = imgpath;

	// -- kontrollera hur bred bilden är --
	if (imgTemp.width >= w){
		alert('Bilden är för bred.\nDen får max. vara ' + w + ' pixlar bred.\n\nVälj en annan bild.');
		document.location.reload();
	
	// -- kontrollera bildens höjd --
	}else if(imgTemp.height >= h){
		alert('Bilden är för hög.\nDen får max. vara ' + h + ' pixlar hög.\n\nVälj en annan bild.');
		document.location.reload();
	
		
	}
	imgTemp.src = '';
}
</script>

<input type="FILE" size="35" name="blob" style="border: 1px solid #7A96E0"  onChange="imgSize(this, 500, 500);">
/Ivar
PepeJeriaMedlem sedan feb. 2003774 inlägg
#2

Hur menar du med ladda om enbart det fältet? Du menar att du vill rensa det?

ta bort document.location.reload() raden och ersätt med:

obj.value = "";
IvarMedlem sedan aug. 2002218 inlägg
#3

Hej!
PepeJeria Ja jag menar att rensa fältet alltså tvinga annonsören att välja en annan bild.
Jag testade med obj.Value=””; men det funkar inte. Förslag?
/Ivar

PepeJeriaMedlem sedan feb. 2003774 inlägg
#4

oj, det blir security error, när man försöker sätta value:t. Inte så konstigt egentligen, för då skulle man ju kunna sätta denna till att ladda upp privat information.
Detta är dock, tyvärr inte svaret på din fråga.

PepeJeriaMedlem sedan feb. 2003774 inlägg
#5

Nu när jag tänkt efter lite, lösningen är att man inte kan submitta formuläret när man lagt ditt för stor bild, en alert dyker upp som säger detta + att man säger "försök med annan" typ.

För detta går, användaren kan trycka på browse igen för att ändra filen. Sen körs scriptet igen, är bilden inom storleken du vill ha så submittar du formuläret...

IvarMedlem sedan aug. 2002218 inlägg
#6

Det låter bra PepeJeria har du kod förslag?

PepeJeriaMedlem sedan feb. 2003774 inlägg
#7

Följande får jag inte att fungera i Mozilla (width och height returnerar alltid 0), men det funkar i IE.
Fast något att börja med i alla fall, du kan ju testa dig fram.
Tex måste du även kolla om det är en bild man laddar upp väl? osv osv...

<script type="text/javascript">
function imgSize(form, w, h){
	var imgpath = form.blob.value;
	var imgTemp = new Image();
	imgTemp.src = imgpath;

	if(imgTemp.width >= w || imgTemp.height >= h)
	{
		alert("Bildens storlek stämmer inte.\nDen får max. vara " + w + " pixlar bred och " + h + " pixlar hög.\n\nVälj en annan bild.");
		imgTemp.src = '';
		return;
	}

	form.submit();
}
</script>

<form action="#" method="post" enctype="multipart/form-data">
	<input type="file" size="35" name="blob" style="border: 1px solid #7A96E0">
	<input type="button" onClick="imgSize(this.form, 500, 500);" value="Submit form">
</form>
IvarMedlem sedan aug. 2002218 inlägg
#8

Hmm!

Kan man ha två funktioner i samma formulär?
Då funkar inte valideringen. Grrrr!!
/Ivar

IvarMedlem sedan aug. 2002218 inlägg
#9

Om man har två funktioner hur ska jag fixa detta:
Kod
<form action="outputfile.asp" method="post" enctype="multipart/form-data" name="mailform" onSubmit="return telluser();imgSize(this.file,500,500,100000);" >
som det är nu funkar bara return telluser()???
/Ivar

PepeJeriaMedlem sedan feb. 2003774 inlägg
#10

Vad har du i telluser? Kan du inte flytta upp imgSize till telluser?

dectgapMedlem sedan sep. 20021 655 inlägg
#11

Testa med

onSubmit="return (telluser() && imgSize(this,500,500,100000));"

Då måste du dock ändra lite i imgSize:

<script type="text/javascript">
function imgSize(form, w, h){
	var imgpath = form.blob.value;
	var imgTemp = new Image();
	imgTemp.src = imgpath;

	if(imgTemp.width >= w || imgTemp.height >= h)
	{
		alert("Bildens storlek stämmer inte.\nDen får max. vara " + w + " pixlar bred och " + h + " pixlar hög.\n\nVälj en annan bild.");
		imgTemp.src = '';
		return false;
	}

	return true;
}
</script>
IvarMedlem sedan aug. 2002218 inlägg
#12

Flytta imgSize till telluser??

IvarMedlem sedan aug. 2002218 inlägg
#13

dectgap det funkar inte.

PepeJeriaMedlem sedan feb. 2003774 inlägg
#14

Men hur ser din telluser funktion ut? returnerar den oxå true när allt uppfyllts? Skadar inte att posta all kod...

IvarMedlem sedan aug. 2002218 inlägg
#15
Här är koden för funktion telluser()

<script language="JavaScript">
  <!--

  
  
  function telluser() {
    
	retval = true;

    if (document.mailform.item.value.length < 1) {
      alert("Du måste skriva ett föremål.");
      retval = false;
	  
    }

    if (document.mailform.description.value.length < 1) {
      alert("Du måste skriva ett beskrivning.");
      retval = false;
    }
	
	if (document.mailform.lan.value.length < 1) {
      alert("Du måste välja ett län.");
      retval = false;
    }

    if (document.mailform.category.value.length < 1) {
      alert("Du måste välja kategori.");
      retval = false;
    }
if (document.mailform.email.value.length < 1) {
      alert("Du måste skriva ett fungerande e-mail.");
      retval = false;
    }
	if (document.mailform.password.value.length < 1) {
      alert("Du måste skriva ett lösenord.");
      retval = false;
    }
	
    return retval;
  }
  // -->
    </script>
och kod för funktion imgSize

<script type="text/javascript">
function imgSize(form, w, h){
	var imgpath = form.blob.value;
	var imgTemp = new Image();
	imgTemp.src = imgpath;

	if(imgTemp.width >= w || imgTemp.height >= h)
	{
		alert("Bildens storlek stämmer inte.\nDen får max. vara " + w + " pixlar bred och " + h + " pixlar hög.\n\nVälj en annan bild.");
		imgTemp.src = '';
		return false;
	}

	return true;
}
</script>

<form  action="outputfile.asp" method="post" enctype="multipart/form-data" name="mailform" onSubmit="return telluser();imgSize(this,500,500,100000);" >
IvarMedlem sedan aug. 2002218 inlägg
#16

Någon som vett?
/Ivar

IvarMedlem sedan aug. 2002218 inlägg
#17

PepeJeria kan Du fixa det?
/Ivar

PepeJeriaMedlem sedan feb. 2003774 inlägg
#18

Det bästa är nog att baka ihop båda funktionerna till en funktion. Gjorde det och hoppas att det nu funkar. Har inte testat, men detta borde ge dig en ide hur du får det att fungera

<script type="text/javascript">
function telluser(form, w, h)
{
	retval = true;

	if (document.mailform.item.value.length < 1)
	{
		alert("Du måste skriva ett föremål.");
		retval = false;
	}

	if (document.mailform.description.value.length < 1)
	{
		alert("Du måste skriva ett beskrivning.");
		retval = false;
	}
	
	if (document.mailform.lan.value.length < 1)
	{
		alert("Du måste välja ett län.");
		retval = false;
	}

	if (document.mailform.category.value.length < 1)
	{
		alert("Du måste välja kategori.");
		retval = false;
	}
	
	if (document.mailform.email.value.length < 1)
	{
		alert("Du måste skriva ett fungerande e-mail.");
		retval = false;
	}
	
	if (document.mailform.password.value.length < 1)
	{
		alert("Du måste skriva ett lösenord.");
		retval = false;
	}

	var imgpath = form.blob.value;
	var imgTemp = new Image();
	imgTemp.src = imgpath;

	if(imgTemp.width >= w || imgTemp.height >= h)
	{
		alert("Bildens storlek stämmer inte.\nDen får max. vara " + w + " pixlar bred och " + h + " pixlar hög.\n\nVälj en annan bild.");
		imgTemp.src = '';
		retval = false
	}

	return retval;
}
</script>
IvarMedlem sedan aug. 2002218 inlägg
#19

Tack PepeJeria funkar fint.
/Ivar

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)