3
        <script type='text/javascript'>
        function redirect() {
            var input = document.getElementById('userInput').value;
            switch(input) {
                case 'ALCOA':
                    window.location.replace('alcoa-Forms.htm');
                    break;
                case 'alcoa':
                    window.location.replace('/alcoa-Forms.htm');    
                    break;

我怎么做才能使这个函数不区分大小写,所以我可以只写一次?

4

6 回答 6

9

最简单的方法是使输入全部大写或全部小写。任君挑选:

input = input.toUpperCase();
switch (input) {
   case 'ALCOA':
      ...

请记住,这也适用于Alcoa,aLcOa等。

你也可以只写case两次:

switch (input) {
   case 'ALCOA':
   case 'alcoa':
于 2013-01-07T17:58:42.270 回答
3

使输入大写:

<script type='text/javascript'>
    function redirect() {
        var input = document.getElementById('userInput').value;
        input = input.toUpperCase()
        switch(input) {
            case 'ALCOA':
                window.location.replace('alcoa-Forms.htm');
                break;
于 2013-01-07T18:00:13.080 回答
2

您需要将输入转换为小写或大写。例如:

var input = document.getElementById('userInput').value.toLowerCase();
于 2013-01-07T17:58:51.437 回答
2

虽然.toLowerCase()(or .toUpperCase()) 是最简单的方法,但还有一种正则表达式方法:

if (/^alcoa$/i.test(input)) {
    // ...
}
于 2013-01-07T18:10:55.153 回答
2

使用 .toLowerCase() 或 .toLocaleLowerCase() 请注意,这些函数与土耳其语等语言中的一些模糊异常几乎相同。

代码

function redirect() {
     var input = document.getElementById('userInput').value.toLowerCase();
     switch (input) {
        case 'alcoa':
            window.location.replace('alcoa-Forms.htm');
            break;
    }
}

更详细

函数不“区分大小写”。相反,您的代码区分大小写。避免此问题的方法是在检查结果之前将输入标准化为单个案例。这样做的一种方法是在检查之前将字符串转换为全小写。

替代解决方案

使用 case fallthrough 语法:

switch(text) { 
     case 'a':
     case 'A':
         doSomething();
}
于 2013-01-07T18:00:07.940 回答
1

如果你使用 toUpperCase() 那么在 switch(input) 函数里面的 case 字符串应该都是大写的,如下所示:

   var input = document.getElementById('userInput').value.toUpperCase();
    switch (input) {
       case 'ALCOA':
               // do something
               break;
    }

如果你使用 toLowerCase() 那么在 switch(input) 函数里面的大小写字符串应该都是小写的,如下所示:

 var input = document.getElementById('userInput').value.toLowerCase();
switch (input) {
   case 'alcoa':
           // do something
           break;
}
于 2013-01-07T18:34:02.403 回答