2016-08-03 162 views
0

我有正常的按钮,我使用jquery进行客户端验证。事情是我也想添加服务器端验证,但是当输入是类型提交jquery代码不起作用。当我使用是否可以在没有提交按钮的情况下验证表单?

$('#addperson').submit(function(event){ 
 
    event.preventDefault(); 
 
    //code for client side checks 
 
});

客户端代码无法正常工作。请有人知道是否有办法让我的按钮同时在客户端和服务器端工作?

+0

那是因为你阻止了默认的行为。如果表单无效,则防止默认行为。 – Progrock

+0

1 - 点击按钮; 2 - 在客户端进行验证; 3 - 发送ajax到服务器端或重定向到你在服务器端验证的地方 –

+0

请问你是什么意思的重定向到功能? – princesse

回答

2

只需首先进行表单验证客户端,比做$('form').submit()并发送所有信息到服务器。

$('button').click(function() { 
    if (validateMyForm()) { 
     $('form').submit(); 
    } 
}); 

function validateMyForm() { 
    // check if valid 
    [...] 

    return isValid 
} 

<form> 
    <input type="text" name="name"/> 
    <button type="button">Submit</button> 
</form> 
+0

那么服务器端验证呢?我的意思是我猜测OP在**提交'form'之前(例如避免重复的用户电子邮件等)使用一些ajax(异步)来请求服务器和验证数据服务器端**。你应该使用承诺来处理它。否则,如果不需要等待任何服务器端验证,那么您的代码当然是正确的。编辑:我重读的问题后,它真的不清楚预计行为,所以也许我完全错了 –

+0

我想要的是,如果一个字段已被留空,例如客户端和服务器端都显示错误消息 – princesse

+0

@ A.Wolff是的,如果使用Ajax并等待响应,则说得对,而不是更复杂,但OP没有指定任何细节。所以我假设你使用客户端验证,而不是使用Ajax调用。 – Justinas

3

'提交事件' 可能会帮助你

var valid = false;  
$("#valid").on('change', function(){ 
    valid = this.checked; 
}) 
$('#form').on('submit', function(e){ 
    console.log(valid); 
    if(!valid) { 
    e.preventDefault(); 
    $('#ipt').val('oops, stopped'); 
    } else { 
    $('#ipt').val('sending'); 
    //yey 
    } 
}); 

工作jsbin: https://jsbin.com/nowirij/4/edit?html,console,output

相关问题