如何确保textarea的字符串值以逗号

时间:2016-05-02 13:21:02

标签: javascript python html

我已经尝试使用谷歌搜索这些信息几个小时,我不确定我是否只是没有正确搜索。我所看到的一切都说他们的textarea信息用逗号分隔,他们想做别的事。我试图弄清楚如何实际确保用户输入用逗号分隔的字符串值(因此,如果他们输入一个消息就会发生;等等或提交验证时)。我想要用逗号分隔的值,因为在提交时,我将字符串输入到数组中,使用逗号分隔作为分隔符。我使用的是html,javascript和python。请不要让我使用其他语言或不使用cgi,因为我没有能力在我的班级计算机上添加任何东西。谢谢你的帮助!

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代码:

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>

2 个答案:

答案 0 :(得分:0)

构建更改功能以观察textarea更改,并使用regex每次验证更改。或者使用HTML5表单验证。

然后允许更改,如果其有效,否则提醒用户他们的更改无效。您可以禁用提交按钮或构建更详细的功能,以帮助用户自动格式化文本。

我不是正则表达式的专家,但它非常强大,这似乎是一个很好的用途。

以下是表单验证的一些info

以下是关于逗号分隔的正则表达式的StackOverflow链接。

答案 1 :(得分:0)

您可以使用正则表达式来检查textarea的值。如果我了解您的问题,用户应该只能输入数字和逗号。此外,textarea不应以逗号开头并以逗号结尾。您可以在用户提交表单后检查textarea的值:

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
}