Javascript 如何在jquery中解决这个问题?
我有一个表单,我在其中验证用户的输入,当他们单击按钮时,表单被提交 我的示例代码: 表格:Javascript 如何在jquery中解决这个问题?,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个表单,我在其中验证用户的输入,当他们单击按钮时,表单被提交 我的示例代码: 表格: <form> ... <div class="form-actions" id="saveButtons"> <button class="btn btn-primary" /><%=i18n.localize("save")%></button> <
<form>
...
<div class="form-actions" id="saveButtons">
<button class="btn btn-primary" /><%=i18n.localize("save")%></button>
<%if(outputs.isPermitted){%><script> </script><a class="btn btn-info" id="publish_api" >Save & Publish</a> <%}%>
</div>
</form>
$('#publish_api').click(function(e){
$("body").on("api_saved", function(e){
$.ajax({
type: "POST",
url: "<%=site.context%>/site/blocks/life-cycles/ajax/life-cycles.jag",
data: {
action :"updateStatus",
...
});
$("#manage_form").submit();
});
And form input parameter validation happens in another js function:
var v = $("#manage_form").validate({
submitHandler: function(form) {
if(!validate_tiers()){
return false;
}
$('#saveMessage').show();
$('#saveButtons').hide();
$(form).ajaxSubmit({
success:function(responseText, statusText, xhr, $form) {
$('#saveMessage').hide();
$('#saveButtons').show();
if (!responseText.error) {
$( "body" ).trigger( "api_saved" );
} else {
...
...
保存和发布
单击按钮时,我调用此jquery函数:
<form>
...
<div class="form-actions" id="saveButtons">
<button class="btn btn-primary" /><%=i18n.localize("save")%></button>
<%if(outputs.isPermitted){%><script> </script><a class="btn btn-info" id="publish_api" >Save & Publish</a> <%}%>
</div>
</form>
$('#publish_api').click(function(e){
$("body").on("api_saved", function(e){
$.ajax({
type: "POST",
url: "<%=site.context%>/site/blocks/life-cycles/ajax/life-cycles.jag",
data: {
action :"updateStatus",
...
});
$("#manage_form").submit();
});
And form input parameter validation happens in another js function:
var v = $("#manage_form").validate({
submitHandler: function(form) {
if(!validate_tiers()){
return false;
}
$('#saveMessage').show();
$('#saveButtons').hide();
$(form).ajaxSubmit({
success:function(responseText, statusText, xhr, $form) {
$('#saveMessage').hide();
$('#saveButtons').show();
if (!responseText.error) {
$( "body" ).trigger( "api_saved" );
} else {
...
$(“#发布api”)。单击(函数(e){
$(“正文”)。在(“api_已保存”,函数(e){
$.ajax({
类型:“POST”,
url:“/site/blocks/lifecycles/ajax/lifecycles.jag”,
数据:{
行动:“更新状态”,
...
});
$(“#管理表格”).submit();
});
表单输入参数验证在另一个js函数中进行:
var v=$(“#管理表格”)。验证({
submitHandler:函数(表单){
如果(!validate_tiers()){
返回false;
}
$('#saveMessage').show();
$(“#保存按钮”).hide();
$(表格).ajaxSubmit({
成功:函数(responseText、statusText、xhr、$form){
$('#saveMessage').hide();
$(“#保存按钮”).show();
如果(!responseText.error){
$(“body”).trigger(“api_已保存”);
}否则{
...
现在我的问题是,由于我已在click()事件中注册了.on()处理程序,如果用户在未填写必填字段的情况下单击按钮,则在正确填写表单并单击提交后,数据仍会发送到后端
发生这种情况是因为我已在click()
函数中注册了.on
事件处理程序。
如何解决此问题?如果我正确理解了您的问题,您只需将
.on()
-handler绑定到之外即可解决此问题。单击()
// this submits the form when button is clicked
$('#publish_api').click(function(e){$("#manage_form").submit();});
// and this makes the ajax-call when "api_saved"-event is triggered
$("body").on("api_saved", function(e){ /* ... */ });
但我不是舒尔唯一的问题。您的问题有点不清楚……听起来您需要验证,然后提交。您的验证应该在单击后运行,如果一切都通过,则提交information@RobertRozas我在这里问了类似的问题,基于此我想解决上述问题。我认为我的逻辑是正确的,但退出e不确定我应该使用什么样的事件处理程序来代替.on()处理程序。@ratha您的.on()
只是一个绑定事件,允许您使用任何您想要的事件。无论是.on('click',function(){…})
还是。click(function(){…})
通常都是一样的。