Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在表单的submit上调用两个函数_Javascript_Ruby On Rails 3_Client Side_Jquery Events_Client Side Validation - Fatal编程技术网

Javascript 在表单的submit上调用两个函数

Javascript 在表单的submit上调用两个函数,javascript,ruby-on-rails-3,client-side,jquery-events,client-side-validation,Javascript,Ruby On Rails 3,Client Side,Jquery Events,Client Side Validation,我在rails应用程序中使用客户端验证gem进行表单验证,它为提交时的表单添加了一些进行验证的函数,我需要自己执行客户端验证gem功能之外的自定义验证,因此当我使用form.submit=function添加它时,它可以工作,这两种验证都被调用。但我不明白提交表单或不提交表单的决定将如何做出,如果两个函数都返回false,那么它应该提交,但看起来即使其中一个函数返回true表单提交时没有等待另一个函数返回其值,我如何处理这种情况,我不能将它变成一个函数,因为这意味着将我的代码放在客户端验证Jav

我在rails应用程序中使用客户端验证gem进行表单验证,它为提交时的表单添加了一些进行验证的函数,我需要自己执行客户端验证gem功能之外的自定义验证,因此当我使用
form.submit=function
添加它时,它可以工作,这两种验证都被调用。但我不明白提交表单或不提交表单的决定将如何做出,如果两个函数都返回false,那么它应该提交,但看起来即使其中一个函数返回true表单提交时没有等待另一个函数返回其值,我如何处理这种情况,我不能将它变成一个函数,因为这意味着将我的代码放在客户端验证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
$(“#新业务”)。提交->
该值=$(“#业务#推荐人(U代码)”)
如果(该.attr(“已验证”)=“真”)
返回真值
其他的
代码=$(“#业务_推荐人_代码”)
$.ajax'/representations/validate_code',
键入:“获取”
数据类型:“json”
数据:“code=#{code.val()}”
成功:(数据、文本状态、jqXHR)->
if(data.error)
之后(“无效参考代码”)
其他的
attr(“已验证”,true)
提交
错误的
符合事实的

另一个由客户端验证自动生成的代码是我无法更改的。

如果使用一些客户端参数,可以执行以下操作:

<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>

函数checkValues()
{
var value1=函数GetValue1Value();
var value2=函数GetValue2Value();
if(value1==True&&value2==True)
{
完全submit();
}
}
函数completeSubmit()
{
//创建(post)到某个目标的请求。
}
您还可以将客户端变量(?)传递给服务器,并在服务器上检查它们


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

这里有一个解决方案,您可以尝试:

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

添加了供参考的代码您可能不需要使用.submit,而是使用onclick。基于调用submitas的结果,我说我不能将这两个函数合并在一起。我在我的后端服务器上有我的验证,所以不用担心通过传递js代码。