Just nu i M3-nätverket
Jump to content

Hjälp med JavaScript i ett Adobe formulär


Micke 007
 Share

Recommended Posts

Micke 007

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!

Link to comment
Share on other sites

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');
}

 

Edited by .M
Fixat felaktig kod
Link to comment
Share on other sites

Micke 007

🙂 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

Link to comment
Share on other sites

Micke 007

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

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

Link to comment
Share on other sites

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. 

Link to comment
Share on other sites

Micke 007

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

Link to comment
Share on other sites

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'):
  }
}

 

Link to comment
Share on other sites

Cecilia
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?

Link to comment
Share on other sites

Micke 007

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;
	}
}

 

🙂

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



×
×
  • Create New...