在提交表单时调用两个函数

时间:2012-10-05 20:30:50

标签: javascript ruby-on-rails-3 javascript-events client-side client-side-validation

我在rails应用程序中使用client_side_validations gem进行表单验证,它为执行验证的表单添加了一些函数,我需要在client_side_validations gem的功能之外执行自己的自定义验证,因此,当我使用form.submit = function添加它时,它会起作用,两个验证都会被调用。但是我不明白将如何提交表单或不提交表单的决定,如果两个函数都返回false,那么它应该提交但看起来即使其中一个返回true,表单也会提交而不等待对于另一个返回它的值,我怎么能处理这样的情况,我不能把它变成一个函数,因为这意味着将我的代码放在client_side_validations JavaScript文件中,我永远不想这样做?

感谢任何想法和帮助。

这是我的自定义验证码,供参考

 $('#new_business').submit ->
    that = $('#business_referrer_code')
    if(that.attr("validated") == "true")
      return true
    else
      code = $('#business_referrer_code')
      $.ajax '/representatives/validate_code',
        type: 'GET'
        dataType: 'json'
        data: "code=#{code.val()}"
        success: (data, textStatus, jqXHR) ->
          if(data.error)
            that.after("<label class='message'> Invalid Reference Code</label>")
          else
            that.attr("validated", true)
            that.submit()
      false
    true

client_side_validations自动生成的其他代码是我无法改变的。

由于

2 个答案:

答案 0 :(得分:0)

以下是您可以尝试的解决方案:

onsubmit="return validateName() && validatePhone() && validateAddress() && validateEmail()"

答案 1 :(得分:-1)

如果你正在使用一些客户端参数,你可以这样做:

<script type="text/javascript">
    function checkValues()
    {
        var value1 = functionGetValue1Value();
        var value2 = functionGetValue2Value();

        if (value1 == True && value2 == True)
        {
            completeSubmit();
        }
    }

    function completeSubmit()
    {
        // create a (post) request to some destination.
    }
</script>
<form action="javascript:checkValues();">
    <submit value="submit" />
</form>

您还可以将客户端变量(?)传递给服务器,并在服务器上进行检查。

如果你这样做,可能有人在网络上嗅探可能会采取这些变量并劫持会话或类似的东西。但它比纯客户端验证更好,用户可以编辑js代码并通过。