在jScript中合并两个函数

时间:2014-07-16 17:21:20

标签: javascript function

我需要在我的页面上使用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知识,我没有使用正确的搜索条件......

2 个答案:

答案 0 :(得分:1)

没有你所描述的那样,但这会给你带来同样的效果。

var validate = function () {
    // ... validation code here
}

$("#signup").change(validate);
$("#signup").ready(validate);

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

答案 1 :(得分:0)

有很多方法可以解决这个问题,但是既然我们正在为我讨论jQuery,那么最简洁的就是立即触发change事件处理程序:

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