2016-05-02 5 views
1

私は数時間にわたりこの情報をグーグルで試してみましたが、正しく検索していないかどうかはわかりません。私が見てきたことは、テキストエリアにカンマで区切られた情報があり、何か他のことをしたいということです。私は実際にユーザーがカンマで区切られた文字列値を入力することを実際に確認する方法を見つけようとしています。私は値をカンマで区切って欲しいと思います。なぜなら、サブミット時にコンマで区切って区切り文字を区切り文字として配列に入力しているからです。私はhtml、javascript、およびpythonを使用しています。クラスコンピュータに何かを追加する機能がないので、他の言語を使用するか、cgiを使用しないように私に依頼しないでください。何か助けてくれてありがとう!テキストエリアにカンマで区切られた文字列値があることを確認する方法

HTMLコード:

<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コード:

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

ブラウザから正確に送信したいものはありますか?例を追加してください。また、すべての有効なフォーマットをユーザーが入力できるようにしていますか? – gurvinder372

+0

私が間違っていると私を訂正します。文字列中の異なる単語をコンマで区切りたいのですか、またはユーザーが複数の文字列をコンマで区切って入力したいのですか? –

+0

ユーザーは数字と文字からなる最大25の異なる文字列をテキストエリアに入力し、各文字列をコンマで区切る必要があります。 – Tigger

答えて

0

正規表現を使用して、テキストエリアの値を確認することができます。私があなたの問題を理解すれば、ユーザーは数字とカンマしか入力できないはずです。さらに、テキストエリアはコンマで始まり、コンマで終わるべきではありません。ユーザーがフォームを送信すると、テキストエリアの値を確認できます。

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

ありがとうございます。私はこれをチェックします! – Tigger

0

が変更機能上の変化をtextareaを見て、変更のたびに検証するためにregexを使用してビルドします。または、HTML5フォームの検証を使用してください。

有効な方法でユーザーに変更が無効であると警告された場合は、変更を許可します。送信ボタンを無効にするか、ユーザーがテキストを自動フォーマットするのに役立つより詳細な機能を構築することができます。

私はregexの専門家ではありませんが、これは本当に強力で、これはそのような使い方のようです。

フォームの検証にはinfoがあります。

カンマ区切りの正規表現に関するリンクはStackOverflowです。

+0

リンクありがとうございます。私はそれらを調べます! – Tigger

関連する問題