这就是我想要做的:单击单选按钮时,我想更新表单中的一些值,并且只有在更新这些值后,才提交整个表单。我遇到的问题是,表单是在值更新之前提交的。
这是我当前(非工作)的实现:
<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/