0

我在 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 自动生成的其他代码是我无法更改的。

4

2 回答 2

0

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

onsubmit="return validateName() && validatePhone() && validateAddress() && validateEmail()"
于 2014-05-09T11:05:00.810 回答
-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代码并通过的纯客户端验证要好。

于 2012-10-05T20:51:39.927 回答