jQuery正常提交表单或使用FontAwesome按钮依赖变量的Ajax

时间:2017-10-26 08:06:13

标签: javascript php jquery ajax forms

我正在使用按钮进行提交,因为这是使用fontawesome按钮的唯一简单方法。我检测到选中了哪个按钮,并将该值放在隐藏字段中,以便在我的Ajax例程中可用。

这会出现问题,因为一个按钮需要正常提交,因为它会转到创建pdf的脚本。

使用Ajax提交其他条件。我尝试了以下内容,当然,它不起作用,因为它创建了一个递归循环。 如果不创建提交循环,就无法想出这样做的方法。

表格:

table.dataTable {
     padding-top: 50px;
}

jQuery代码:

<input type="hidden" id="Clicked" name="Clicked" value="" />
<button type="submit" class="btn btn-success ClickCheck" id="Create" style="display:inline;"> <i class="fa fa-file-pdf-o"> <span>Create Bill</span></i></button>
<button type="submit" class="btn btn-success ClickCheck" id="Reset" style="display:inline;"> <i class="fa fa-times"> <span>Reset</span></i></button>
<button type="submit" class="btn btn-success ClickCheck" id="SaveData"> <i class="fa fa-archive"> <span>Save Only</span></i></button>
<button type="submit" class="btn btn-success ClickCheck" id="Create-Save"> <i class="fa fa-archive"> <span>Create and Save</span></i></button>

2 个答案:

答案 0 :(得分:0)

回调应该从verify()完成,我已经写了一个例子。

&#13;
&#13;
var goIsWaiting=false;
var goIsActive=false;

function go(){
  if(goIsActive)
    adviseGoIsActive()
  else{
    console.log("Go Is Waiting !");
    goIsWaiting=true;
  }
}

function activate(){
  //.. Doing some stuff here
  if(goIsWaiting) adviseGoIsActive();
  goIsActive=true;
}

function adviseGoIsActive(){
  console.log("Go Is Active !")
}
&#13;
<input type="submit" value="Go" onClick="go()">
<input type="submit" value="Activate Go Action" onClick="activate()">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

此问题的解决方案只是使用链接而不是&lt; input&gt;或者&lt; button&gt;。 这是HTML:

<input type="hidden" id="Clicked" name="Clicked" value="" />
<a class="btn btn-success ClickCheck" id="Create" href="javascript:void(0)"> <i class="fa fa-file-pdf-o"> <span>Create Bill</span></i></a>&nbsp;&nbsp;&nbsp;
<a class="btn btn-success ClickCheck" id="Reset" href="javascript:void(0)"> <i class="fa fa-times"> <span>Reset</span></i></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a class="btn btn-success ClickCheck" id="SaveData" href="javascript:void(0)"> <i class="fa fa-archive"> <span>Save Only</span></i></a>&nbsp;&nbsp;&nbsp;&nbsp;
<a class="btn btn-success ClickCheck" id="Create-Save" href="javascript:void(0)"> <i class="fa fa-archive"> <span>Create and Save</span></i></a>

其中一个按钮是重置。虽然您可以定义一个&lt; button&gt;作为type =“reset”,为了保持一致性,以及其他原因,我也把它留作链接,因为按钮id是我帖子的一部分,Ajax脚本会检测到并只返回null,然后使用jQuery在空的Ajax调用之后重置以清除表单。

$(document).ready(function()
{
    $('.ClickCheck').click(function()
    {
        var ButtonID = $(this).attr('id');
        $('#Clicked').val(ButtonID);
        var Form = $('#MyForm');
        var Valid = verify(); // form verify function
        if(Valid)
        {
            if(ButtonID == "Create") // Send to PDF script
            {
                $(Form).attr('action', './blformpdf.php');
                $(Form).submit();
            }
            else
            {
                $.ajax(
                {
                    type: "POST",
                    url: "scripts/Ajax.php",
                    data: Form.serialize(),
                    success: function(response)
                    {
                        // Do whatever here with response data
                    }  
                }
                if(ButtonID == "Reset")
                {
                    $('#MyForm').trigger("reset");
                    $('#Clicked').val('');
                }
            }
        }    
    });
});