2017-08-08 1 views
0

Ich habe einen Eingang, den ich einen Barcode mit einem Scanner (Strichcode enthält nur Zahlen) das Problem ist, dass ich vielleicht einen Barcode mehr als einmal scannen möchte, in diesem Fall mag ich in der Lage sein, so etwas zu tun:Eingabe erlauben Zahlen und nur einen Buchstaben/Symbol

10 * Barcode-Nummer

Gerade jetzt nur Zahlen in meinem Eingang mit diesem Code zu erlauben, ich bin in der Lage:

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"> 

Aber damit kann ich nur Zahlen eintippen, was kann ich tun, um typen einen bestimmten Buchstaben/Symbol in diesem Fall zu geben: *

Mit anderen Worten möchte ich einen Regex, der Zahlen und nur dieses Symbol erlaubt "* ". Ich habe versucht, etwas wie folgt:

if (/\D/g.test(this.value)) this.value = this.value.replace(/^[0-9*]+$/,'')" 

Aber das erlaubt nur Buchstaben und Symbole.

+0

ich, was nicht bekommen meinen Sie mit '10 * Strichcode number' –

+0

@RoryMcCrossan Guter Punkt, statt Scan 10-mal ein Strichcode Ich möchte die Anzahl der Zeiten eingeben, die ich diesen Barcode (in diesem Fall 10) möchte und mit * weiß, dass ich diesen Barcode n mal brauche. Zum Beispiel 3 * 15000 in diesem Fall möchte ich 15000 3 Mal verwenden. – User1899289003

+0

In diesem Fall würde ich vorschlagen, dass Sie zwei separate Eingänge haben. Eine für den Barcode selbst, die andere für die Menge von ihnen –

Antwort

0

In diesem Fall sollten Sie an der Validierung der Zeichen und am Eingabewert arbeiten.

Der reguläre Ausdruck hilft, nur die letzte Eingabe zu validieren, aber um eine bessere Arbeit zu tun, sollten Sie alle nicht gültigen Eingabe auf keyDown Ereignis.

Und validieren Sie den gesamten Eingang auf keyUp Wert.

Betrachten Sie dieses Beispiel:

function onKeyDown(event) { 
 
\t if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 16 || event.keyCode == 8) 
 
    \t return true; 
 

 
    event.preventDefault(); 
 
    return false; 
 
} 
 

 
function onKeyUp(event) { 
 
\t var value = event.target.value 
 
    if (!value.match(/^[0-9]+\*?[0-9]*$/)) { 
 
    \t event.preventDefault(); 
 
    event.target.value = value.substring(0, value.length-1); 
 
    \t return false; 
 
    } 
 
    return true; 
 
} 
 

 
document.getElementById('inputSource').addEventListener('keydown', onKeyDown); 
 
document.getElementById('inputSource').addEventListener('keyup', onKeyUp);
My input sample: <input type="text" value="" id="inputSource"/>

Verwandte Themen