Avatar billede poulchristian Juniormester
29. juni 2001 - 21:15 Der er 1 kommentar og
1 løsning

Tekst fra alert-box som alm. tekst i HTML-dokument

Jeg har følgende JavaScript placeret i et eksternt js-dokument, der checker form-input. Såfremt der mangler udfyldning i visse felter, kommer der en alert-box op. Hvordan kan man lave teksten i denne alert-box om til en almindelig stump tekst i selve HTML-dokumentet hvori formen befinder sig, og hvor denne tekst kommer frem, hvis der mangler oplysninger i formen?

Det eksterne js-dokument indeholder følgende:

--------------------------------------
var checkObjects    = new Array();
var errors        = \"\";
var returnVal        = false;
var language        = new Array();
language[\"header\"]    = \"\";
language[\"start\"]    = \"\";
language[\"field\"]    = \"Fejl: \";
language[\"require\"]    = \" skal udfyldes\";
language[\"min\"]        = \" og skal bestå af mindst \";
language[\"max\"]        = \" og må ikke indeholde mere end \";
language[\"minmax\"]    = \" og højst \";
language[\"chars\"]    = \" tal\";
language[\"num\"]        = \" og må kun indeholde tal\";
language[\"email\"]    = \" skal indeholde gyldig e-mail adresse\";

function define(n, type, HTMLname, min, max, d) {
var p;
var i;
var x;
if (!d) d = document;
if ((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
d = parent.frames[n.substring(p+1)].document;
n = n.substring(0,p);
}
if (!(x = d[n]) && d.all) x = d.all[n];
for (i = 0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}
for (i = 0; !x && d.layers && i < d.layers.length; i++) {
x = define(n, type, HTMLname, min, max, d.layers[i].document);
return x;     
}
eval(\"V_\"+n+\" = new formResult(x, type, HTMLname, min, max);\");
checkObjects[eval(checkObjects.length)] = eval(\"V_\"+n);
}
function formResult(form, type, HTMLname, min, max) {
this.form = form;
this.type = type;
this.HTMLname = HTMLname;
this.min  = min;
this.max  = max;
}
function validate() {
if (checkObjects.length > 0) {
errorObject = \"\";
for (i = 0; i < checkObjects.length; i++) {
validateObject = new Object();
validateObject.form = checkObjects[i].form;
validateObject.HTMLname = checkObjects[i].HTMLname;
validateObject.val = checkObjects[i].form.value;
validateObject.len = checkObjects[i].form.value.length;
validateObject.min = checkObjects[i].min;
validateObject.max = checkObjects[i].max;
validateObject.type = checkObjects[i].type;
if (validateObject.type == \"num\" || validateObject.type == \"string\") {
if ((validateObject.type == \"num\" && validateObject.len <= 0) || (validateObject.type == \"num\" && isNaN(validateObject.val))) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'require\'] + language[\'num\'] + \"\\n\";
} else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'require\'] + language[\'min\'] + validateObject.min + language[\'minmax\'] + validateObject.max+language[\'chars\'] + \"\\n\";
} else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'require\'] + language[\'min\'] + validateObject.min + language[\'chars\'] + \"\\n\";
} else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'require\'] + language[\'max\'] + validateObject.max + language[\'chars\'] + \"\\n\";
} else if (!validateObject.min && !validateObject.max && validateObject.len <= 0) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'require\'] + \"\\n\";
}
} else if(validateObject.type == \"email\") {

if ((validateObject.val.indexOf(\"@\") == -1) || (validateObject.val.charAt(0) == \".\") || (validateObject.val.charAt(0) == \"@\") || (validateObject.len < 6) || (validateObject.val.indexOf(\".\") == -1) || (validateObject.val.charAt(validateObject.val.indexOf(\"@\")+1) == \".\") || (validateObject.val.charAt(validateObject.val.indexOf(\"@\")-1) == \".\")) { errors += language[\'start\'] + language[\'field\'] + validateObject.HTMLname + language[\'email\'] + \"\\n\"; }
}
}
}
if (errors) {
alert(language[\"header\"].concat(\"\\n\" + errors));
errors = \"\";
returnVal = false;
} else {
returnVal = true;
}
}
--------------------------------------

i <head> i selve HTML-dokumentet med formen er angivet følgende:

--------------------------------------
<script type=\"text/javascript\">
<!--
function init()
{
define(\'email\', \'email\', \'\"Afsender e-mail\"\');
define(\'name\', \'string\', \'\"Navn\"\');
define(\'address\', \'string\', \'\"Fuld adresse\"\');
define(\'phone\', \'num\', \'\"Telefon\"\', 8, 10);
}
//-->
</script>
--------------------------------------

- jeg ved ikke, hvad jeg skal skrive, for at meddelelsen fra alert-boxen kan blive til almindelig tekst i HTML-dokumentet - gør du?

- hilsener fra Poul Chr.
Avatar billede jakoba Nybegynder
29. juni 2001 - 21:25 #1
Det nemmeste er at lave et extra felt i formen (eller udenfor) hvor man så skriver alert-teksten med javascript.

        alert( \"din fejltekst\" );
bliver til:
        document.formnavn.feltnavn.value=\"din fejltekst\";

Men pas på, det felt kan sagtens være scrollet ud af vinduet når brugeren trykker submit, (eller måske bemærker han bare ikke at der pludselig kommer en tekst der). alert boksen er en langt bedre måde at sørge for fejlmeddelelsen ikke bliver overset.

mvh JakobA

Avatar billede davidleonard Nybegynder
09. juli 2001 - 23:35 #2
Du kan også lave et frameset, og loade det ene felt øverst og resten nederst.

så er det parent.[det du kalder den øverste frame].formnavn.feltnavn.value=\'feltxt\';
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester