Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 如何在jquery中解决这个问题?_Javascript_Jquery_Forms - Fatal编程技术网

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(){…})
通常都是一样的。