0

这是我第一次真正用 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;

      }

更好地解释这里发生了什么。这个函数将在我的主函数中调用以弹出一个窗口,显示所有错误应该发生(在 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()...

感谢您的帮助!

4

1 回答 1

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;

}
于 2012-04-09T10:55:40.737 回答