这是我第一次真正用javascript编写代码而且我已经走到了尽头。我需要创建一个函数(不幸的是不允许使用RegExp),它允许我的披萨形式验证用户的输入。确保它只有字母(没有数字,没有空格,除了连字符和撇号之外没有特殊字符)。
用户可以使用一个撇号(前后有一个字母)。并且用户可以使用一个连字符(在它之前和之后有一个字母),用户也可以同时使用撇号和连字符,只要用字母分隔即可。一旦用户点击提交按钮到cgi,我的最终结果是显示全部大写的名称。
示例;
输入客户名称:mike或m'ike或m'i-ke
(点击提交披萨订单)
结果:MIKE或M'IKE或M'I-KE。
到目前为止,这就是我所拥有的:function validatefield01(errMessages)
{
// Get the content of fieldOne
var entry1_info = document.pizza.field01.value;
// error condition will show if character count is less than 4 or greater than 15
if ((entry1_info.length <4) && (entry1_info.length <15))
// error message to be displayed
{
errMessages += " <li>Minimum characters for Client Surname is 4 maximum 15\n";
errMessages += " must use characters only, Apostrophe ( ' ) or hyphen (-) is acceptable.</li>\n";
}
return errMessages;
for(var i=0; i<entry1_info.length; i++)
{
ch = entry1_info.length.charAt(i);
if(ch !=' ' && ch !='.') return false;
}
更好地解释这里发生了什么。这个函数将在我的main函数中调用,弹出一个窗口,显示所有错误(在if语句中创建,确实有效),在我的else语句中我有这个
else {
field01=field01.substring(0).toUpperCase();
return true; // No errors - return to browser and submit form
}
} // End of main function
所以现在发生的事情是,如果输入小写字母,表格不会接受,但如果字母输入大写,表格将接受它,它将在cgi中显示名称。我不知道如何解决这个问题,用户可以输入小写但它应该接受但是在cgi中它应该被改为大写,这就是为什么我有.toUpperCase()......
谢谢你的帮助!
答案 0 :(得分:1)
function validatefield01(errMessages){
var entry1_info = document.f1.sDate.value
//if character count is less than 4 or greater than 15.
if ((entry1_info.length < 4) || (entry1_info.length > 15)) {
// error message to be displayed
errMessages += " <li>Minimum characters for Client Surname is 4 maximum 15\n";
return false;
}
var word = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcedfghijklmnopqrstuvwxyz-'";
// Check input string validation.
for ( var i = 0; i < entry1_info.length; i++) {
if (word.indexOf(entry1_info.charAt(i), 0) == -1) {
// error message to be displayed.
errMessages += "must use characters only, Apostrophe ( ' ) or hyphen (-) is acceptable.</li>\n";
return false;
}
}
document.f1.sDate.value = entry1_info.substring(0).toUpperCase();
return true;
}