Javascript:验证字段(在表单上),以便它只能包含字母,1个连字符和1个撇号

时间:2012-04-06 16:34:28

标签: javascript regex function letters hyphen

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

谢谢你的帮助!

1 个答案:

答案 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;

}