【问题标题】:Merge two functions in jScript合并javascript中的两个函数
【发布时间】:2014-07-16 17:21:19
【问题描述】:

我需要在我的页面上使用 AJAX 调用 PHP 脚本(表单验证)。我对 PHP 很方便,但对 javascrip、jScript 或任何其他客户端语言不太好,所以我找到了一个满足我需求的免费演示脚本,现在我正在玩它只是为了看看我是否可以学习过程中的一些事情。我很好奇是否可以将两个函数合并为一个。

函数看起来基本上是这样的:

// When user changes something in the form
$("#signup").change(function()
{
    // ... validation code here
}

// When the form (page) first loads
$("#signup").ready(function()
{
    // ... validation code here
}

如果有更改,第一个函数会验证表单。

有时用户会提前提交表单(例如,通过按 Enter 键),在这种情况下,在用户输入更改表单中的某些内容之前不会再次进行验证。

我使用验证结果来决定对输入元素应用什么类(告诉用户做了什么,什么没做),如果表单提交但未完成,我希望它保留(或立即再次发生)。我知道我可以应用表单验证,在填写所有必填字段之前不会让用户提交,但让我们假设由于某些未知原因这是不可能的......

第二个函数只是第一个函数的副本,并在页面加载后立即验证表单。这个最初不在演示脚本中,但我发现我可以复制第一个函数并将“更改”一词更改为“准备好”,以便根据需要验证我的表单。

现在,出于好奇,有没有办法将它们合并到一个函数中而不是两个相同的函数?类似于 PHP 中的 OR 运算符:

$("#signup").change(function() || $("#signup").ready(function()
{
    // ... validation code here
}

编辑:是的,我已经用谷歌搜索过了。但是没有成功,可能是由于我缺乏 javascript/jScript 知识,我没有使用正确的搜索词...

【问题讨论】:

    标签: javascript function


    【解决方案1】:

    没有你所描述的东西,但这会给你同样的效果。

    var validate = function () {
        // ... validation code here
    }
    
    $("#signup").change(validate);
    $("#signup").ready(validate);
    

    您可以创建一个函数,分配给一个变量,然后引用该函数。然后可以将该引用传递给任何需要函数作为参数的东西 - .change、.ready、setTimeout、setInterval 等。

    【讨论】:

    • 刚刚试了一下,效果很好。没有重复的代码现在看起来好多了!谢谢:)
    【解决方案2】:

    有很多方法可以解决这个问题,但既然我们在谈论 jQuery,对我来说最简洁的方法是立即有意地触发 change 事件处理程序:

    $("#signup").change(function()
    {
        // ... validation code here
    }).trigger('change'); // causes validation to run
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      相关资源
      最近更新 更多