2016-05-02 8 views
1

Ich habe versucht, diese Informationen für Stunden zu googeln und bin mir nicht sicher, ob ich gerade nicht richtig suche. Alles, was ich gesehen habe, sagt, dass ihr Textbereich Informationen enthält, die durch Kommas getrennt sind, und sie wollen etwas anderes tun. Ich versuche herauszufinden, wie man tatsächlich sicherstellt, dass Benutzer String-Werte eingeben, die durch Kommas getrennt sind (also entweder beim Eingeben einer Nachricht auftritt, wenn sie eine; etc eingeben, oder beim Übergeben einer Validierung auftritt). Ich möchte, dass die Werte durch Kommata getrennt sind, weil ich die substrings bei submit in ein Array eingegeben habe, indem ich sie mit Kommas als Begrenzer spalte. Ich verwende HTML, Javascript und Python. Bitte fragen Sie mich nicht, andere Sprachen zu verwenden oder CGI nicht zu verwenden, da ich nicht in der Lage bin, etwas zu meinem Klassencomputer hinzuzufügen. Danke für jede Hilfe!So stellen Sie sicher, dass ein Textbereich Zeichenfolgenwerte hat, die durch Kommas getrennt sind

HTML-Code:

<html> 
<head> 
<script type='text/javascript'> 
function track() 
{ 
    var xhttp = new XMLHttpRequest(); 
    var tnum=document.getElementById('tnum').value; //get value of textarea 
    if (trimAll(document.getElementById('tnum').value) === '') 
    { 
    alert('Please enter a tracking number!'); 
    } 

    xhttp.onreadystatechange = function() 
    { 
     if (xhttp.readyState == 4 && xhttp.status == 200) 
     { 
      document.getElementById('trackinfo').innerHTML = xhttp.responseText; 
     } 
    }; 
    xhttp.open("POST", 'http://localhost:8000/cgi-bin/track_project_fxn.py', true); 
    xhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
    xhttp.send('tnum='+tnum); 
} 
function trimAll(sString) 
{ 
    while (sString.substring(0,1) == ' ') 
    { 
     sString = sString.substring(1, sString.length); 
    } 
    while (sString.substring(sString.length-1, sString.length) == ' ') 
    { 
     sString = sString.substring(0,sString.length-1); 
    } 
return sString; 
} 
</script> 
</head> 
<body bgcolor="33cccc"> 
<br> 
<h3>Tracking</h3> 

<form id="trackform"> 
<textarea form="trackform" id="tnum" rows="10" cols="45" style="resize:none" placeholder="Enter up to 25 tracking numbers, one per line, and separated by commas"> 
</textarea> 
<br><Br> 
<input type="button" value="Submit" onclick="track()">&nbsp;&nbsp; 
<input type="reset" value="Clear"> 

</form> 
<div id="trackinfo"> 
</body> 
</html> 

Python-Code:

import cgi, cgitb, re 
cgitb.enable 

form=cgi.FieldStorage() 
tnum=form.getvalue('tnum') 
unum=tnum.upper() 
snum=re.sub('[\s+]', '',unum) 
tlist=snum.split(',') 


print("Content-type:text/html\r\n\r") 
print() 

for tnumber in tlist: 
    <logic> 
+0

Was genau möchten Sie vom Browser senden? Fügen Sie ein Beispiel hinzu. Auch was alle gültigen Formate dürfen vom Benutzer eingegeben werden? – gurvinder372

+0

Korrigieren Sie mich, wenn ich falsch liege, möchten Sie verschiedene Wörter in einer Zeichenfolge durch Kommas getrennt sein, oder Benutzer wird eine Eingabe von mehreren Zeichenfolgen durch Kommata getrennt geben? –

+0

Der Benutzer tippt in das Textfeld bis zu 25 verschiedene Zeichenketten, bestehend aus Zahlen und Buchstaben, und sie sollten jede Zeichenkette mit einem Komma trennen. – Tigger

Antwort

0

Sie könnten einen regulären Ausdruck verwenden, um den Wert des Textfelds zu überprüfen. Wenn ich Ihr Problem verstehe, sollte der Benutzer nur Zahlen und Kommas eingeben können. Außerdem sollte der Textbereich nicht mit einem Komma beginnen und mit einem Komma enden. Sie können den Wert der Textfläche überprüfen, nachdem der Benutzer das Formular übermittelt:

var xhttp = new XMLHttpRequest(); 
var tnum=document.getElementById('tnum').value; //get value of textarea 
if (trimAll(document.getElementById('tnum').value) === '') 
{ 
alert('Please enter a tracking number!'); 
return false; // I think you forgot this 
} 
if (wrongFormat(tnum)){ 
alert("Only numbers and commas"); 
return false; 
} 

[..] 

function wrongFormat(s){ 
if (s.match(/[^0-9,]/)) return true; // with letters /[^0-9A-Za-z,]/ 
if (!s.charAt(0).match(/[0-9]/) || !s.charAt(s.length-1).match(/[0-9]/)) return true; 
if (s.match(/[,][,]/)) return true; // check if there are 2 commas in a row 
} 
+0

Danke. Ich werde das überprüfen! – Tigger

0

bauen eine auf Änderungsfunktion die textarea für Änderungen zu beobachten und verwenden regex die Änderung jedes Mal zu bestätigen. Oder verwenden Sie die Formularvalidierung HTML5.

Dann erlauben Sie die Änderung, wenn ihre Gültigkeit andernfalls den Benutzer alarmiert ihre Änderung ist ungültig. Sie können die Übermittlungsschaltfläche deaktivieren oder eine detailliertere Funktion erstellen, mit deren Hilfe der Benutzer den Text automatisch formatieren kann.

Ich bin kein Experte für Regex, aber es ist wirklich mächtig und das scheint eine gute Verwendung dafür.

Hier sind einige info auf Formularvalidierung.

Hier ist ein StackOverflow Link über Komma getrennte Regex.

+0

Danke für die Links. Ich werde in sie schauen! – Tigger

Verwandte Themen