javascript - 在 jQuery 完成修改表单中的值之前提交表单

标签 javascript jquery forms jquery-deferred

这就是我想要做的:单击单选按钮时,我想更新表单中的一些值,并且只有在更新这些值后,才提交整个表单。我遇到的问题是,表单是在值更新之前提交的。

这是我当前(非工作)的实现:

<div class="btn-group" data-toggle="buttons">
    <label id="label_radio_2_78" class="btn btn-info btn-sm checkbox-padding ">
        <input onchange="update_transaction(78)" id="radio_2_78" name="ledger_id" value="2" type="radio">
        BR
    </label>
    <label id="label_radio_3_78" class="active">
        <input onchange="switch_ledgers(78, 3)" id="radio_3_78" checked="checked" name="ledger_id" value="3" type="radio">
        HP
    </label>
</div>

 

function switch_ledgers(transactionId, ledgerId)
{
    deactivate_radio(transactionId, ledgerId).done
    (
        update_transaction(transactionId)
    );
}

 

//checks if the clicked radio buttion is active, if so it unchecks it.
function deactivate_radio(transactionId, ledgerId)
{
    var cb  = $('#radio_' + ledgerId + '_' + transactionId + ':checked');
    var r   = $.Deferred();

    if(cb)
    {
        cb.prop('checked', false);
        $('#label_radio_' + ledgerId + '_' + transactionId).removeClass('active');
    }
    return r.resolve();
}

 

//Submits the form, this function gets called too quickly
function update_transaction(transactionId)
{
    var form    = $("#transaction_" + transactionId);

    $.ajax({
        type:   form.attr('method'),
        data:   form.serialize(),
        url:    form.attr('action')
    }).done(function()
    {
        update_balance();
        update_total_balance();
    });
}

我希望我已经足够清楚地表达了我想要做什么。

谢谢!

最佳答案

看起来您是直接在第一个输入元素的 onchange 事件中调用 update_transaction() 。

您不应该在更改事件中调用 switch_ledgers() 吗?

例如:

<input onchange="switch_ledgers(78)" id="radio_2_78" name="ledger_id" value="2" type="radio">

关于javascript - 在 jQuery 完成修改表单中的值之前提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447023/

相关文章:

javascript - jquery:从 $(window).load() 中排除外部资源

javascript - 如何去除D3气泡图中的外圈

javascript - jquery ajax 成功回调中的 window.open 会阻止后续的 ajax 调用

html - Angular 2 形式 "Cannot Find Control"

javascript - 如何从 Ember 中的路由访问 Controller ?

javascript - document.getElementById ('elementid' ).etc 还是 elementid.etc?

javascript - JSON 使用 JavaScript 读取本地文件(类似的问题 Stack Overflow 没有帮助)

jQuery - 单击后显示一个 div 并关闭另一个

javascript - 如何使用javascript从一个表单获取值并发布到另一个表单?

javascript - css/javascript 表单 onfocus 占位符文本仍然存在,在键入时消失