javascript - 代码很短,有很多重复

标签 javascript jquery

我不太擅长编程,但我总是尽力而为。在下面的代码中你会看到很多重复。我试图缩短它,但我认为它仍然很丑。

我该如何改进它,以减少重复?

   $("#searchterm").keyup(function(e){
    var q = $("#searchterm").val();

    if(e.keyCode==13){
        if(q.substr(0,2) == "A;"){
            $("#imagedocu_art").val("A");
            $("#imagedocu_text").val(q.substr(2))
            $("#new_imagedocu").submit();           
        }
        if(q.substr(0,2) == "B;"){
            $("#imagedocu_art").val("B");
            $("#imagedocu_text").val(q.substr(2))
            $("#new_imagedocu").submit();           
        }
        if(q.substr(0,2) == "T;"){
            $("#imagedocu_art").val("T");
            $("#imagedocu_text").val(q.substr(2))
            $("#new_imagedocu").submit();           
        }
        if(q.substr(0,2) == "D;"){
            $("#imagedocu_art").val("D");
            $("#imagedocu_text").val(q.substr(2))
            $("#new_imagedocu").submit();           
        }
        if(q.substr(0,3) == "DD;"){
            $("#imagedocu_art").val("DD");
            $("#imagedocu_text").val(q.substr(3))
            $("#new_imagedocu").submit();           
        }
    }


    if((q.substr(0,2) == "D;") || (q.substr(0,3) == "DD;")){
    if(q.substr(0,2) == "D;"){
      var text = q.substr(2);
    }else{
      var text = q.substr(3);
    }

最佳答案

正则表达式可以取代所有的 if 检查。

if (e.keyCode==13) {
    var match = q.match(/^([ABTD]|DD);(.*)/);
    if (match) {
        $("#imagedocu_art").val(match[1]);
        $("#imagedocu_text").val(match[2]);
        $("#new_imagedocu").submit();           
    }
}

reg exp的基本解释

/       Start of reg exp
^       Start of string
(       Start of capture group
[ABTD]  Match any character included inside the []
|       OR
DD      Match the String "DD"
)       End of capture group
;       Match a semicolon
(.*)    Match all the remaining
/       End of Reg Exp

比赛将发生

null or ["A;FOO", "A", "FOO"] or ["DD;FOO", "D", "FOO"]

关于javascript - 代码很短,有很多重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507231/

相关文章:

javascript - 捕获 net::ERR_NAME_NOT_RESOLVED 以修复错误的 img 链接

javascript - 在 unix 时间戳中获取 moment.js 时刻 0

javascript - 动态表单输入上的 jquery 验证插件不起作用

jquery - 如何使图像褪色,滚动时可见并且应该重复 Action

javascript - 加载 html 后的 LaTeX 公式

javascript - 为什么 Javascript 规范设计者在 promise 中引入了 microtask

javascript - 如何获取 Meteor 包中文件的路径?

javascript - Visual Studio 2013 中的 Html 和 javascript

jquery 使用属性 border-size : border-box 指定元素的错误高度

javascript - RemoveClass 不适用于 Click