Just nu i M3-nätverket
Gå till innehåll

Hjälp med JavaScript i ett Adobe formulär


Micke 007
 Share

Rekommendera Poster

Hej

Försöker att få in validering av personnummer i ett formulär. D v s att använda kontrollsiffran som en kontroll att man skrivit in ett korrekt personnummer och inte råkat skiva fel.

Har Googlat och hittat något (tror jag):

var validatePersonnummer = function(input) {
    // Check valid length & form
    if (!input) return false;

    if (input.indexOf('-') == -1) {
        if (input.length === 10) {
            input = input.slice(0, 6) + "-" + input.slice(6);
        } else {
            input = input.slice(0, 8) + "-" + input.slice(8);
        }
    }
    if (!input.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})|(\d{4})(\d{2})(\d{2})\-(\d{4})$/)) return false;

    // Clean input
    input = input.replace('-', '');
    if (input.length == 12) {
        input = input.substring(2);
    }

    // Declare variables
    var d = new Date(((!!RegExp.$1) ? RegExp.$1 : RegExp.$5), (((!!RegExp.$2) ? RegExp.$2 : RegExp.$6)-1), ((!!RegExp.$3) ? RegExp.$3 : RegExp.$7)),
            sum = 0,
            numdigits = input.length,
            parity = numdigits % 2,
            i,
            digit;

    // Check valid date
    if (Object.prototype.toString.call(d) !== "[object Date]" || isNaN(d.getTime())) return false;

    // Check luhn algorithm
    for (i = 0; i < numdigits; i = i + 1) {
        digit = parseInt(input.charAt(i))
        if (i % 2 == parity) digit *= 2;
        if (digit > 9) digit -= 9;
        sum += digit;
    }
    return (sum % 10) == 0;
};

 

MEN när jag klistrar in detta i Egenskaper för textfält och Validera händer inget om man skriver in ett felaktigt personnummer. Vad jag förstår som helt ny på JS saknas en appAlert-pryl?

Finna det någon vänlig själ som kan skriva ett komplett script så att när man skriver inte ett icke korrekt personnummer, det poppar upp en ruta som varnar?

 

Trevlig sommar alla!

Länk till kommentar
Dela på andra webbplatser

Jag är osäker på exakt hur det fungerar med "Adobe formulär", är det en pdf exempelvis?

 

Det du gjort är en funktion som kontrollerar om det är giltigt personnummer och den ger tillbaka sant om det är giltigt, falskt om det är ogiltigt, men du måste anropa funktionen någonstans. Du ska nog inte lägga din alert i denna funktion.

 

Utan du ska göra något i stil med det här där du anropar funktionen, men du har inte lagt till ditt försök till att anropa funktionen i din fråga.

var valid = validatePersonnummer(personnummer);
if(!valid) {
  alert('fel fel fel');
}

 

Redigerad av .M
Fixat felaktig kod
Länk till kommentar
Dela på andra webbplatser

🙂 Tack! Gissade nåt saknas. 
Men nu klistrar jag in detta i "Åtgärder" och får då

SyntaxError: unterminated string literal
och den markerar sista "}"

Och ja, det är ett pdf-formulär jag håller på med

Länk till kommentar
Dela på andra webbplatser

Bytte ' mot " och då försvann error.

Men jag får fortfarande ingen varning om jag skriver in ett felaktigt personnummer....

Länk till kommentar
Dela på andra webbplatser

2 timmar sedan, skrev Micke 007:
2 timmar sedan, skrev Micke 007:

kontroll att man skrivit in ett korrekt personnummer

Nä, det kollar inte att man skrivit korrekt personnummer, det kollar att man skrivit personnumret korrekt. Man kan fortfarande skriva ett personnummer som inte finns eller som inte överensstämmer med namnet som angetts. 

Länk till kommentar
Dela på andra webbplatser

Helt rätt polken! Men till att börja med vill jag bara få koll på att det är ett korrekt inskrivet personnummer, dvs använda kontrollsiffran. Nästa steg blir att köra en kontroll mot SPAR eller liknande

Länk till kommentar
Dela på andra webbplatser

När ska valideringen ske? i  samband med att man lämnar inmatningsfältet?

 

I en webbsida så hade jag gjort så här, men vet inte om det fungerar i pdf.

var elem = document.querySelector('#personnummer');
elem.addEventListener('blur', function(e) {
  var valid = validatePersonnummer(e.target.value);
  if(!valid) {
    alert('fel fel fel'):
  }
}

 

Länk till kommentar
Dela på andra webbplatser

12 minuter sedan, skrev Micke 007:

Tack allihopa! Har löst sig via Adobes forum

Trevlig sommar!

Tack detsamma!

 

Kan du inte berätta vad lösningen var så att den som får samma problem i framtiden får veta hur man ska göra?

  • Gilla 1
Länk till kommentar
Dela på andra webbplatser

Man lägger detta först:

if (event.value) {
	var result = validatePersonnummer(event.value);
	if (result==false) {
		app.alert("Icke korrekt personnummer");
		app.beep();
		event.rc = false;
	}
}

 

🙂

 

  • Tack 1
Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...