Javascript 在表单的submit上调用两个函数
我在rails应用程序中使用客户端验证gem进行表单验证,它为提交时的表单添加了一些进行验证的函数,我需要自己执行客户端验证gem功能之外的自定义验证,因此当我使用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
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代码。