我在表格中列出了所有用户。最后一个td元素将包含一个表单, 根据用户是否打开帐户的表单或关闭帐户的表单 已经关闭或没有。我正在使用来自http://malsup.com/jquery/form/的jQuery AJAX表单插件。 我想做的是在提交表单之前更改按钮的值。
这是我现在的JS:
$(document).ready(function() {
$('form').ajaxForm({
beforeSubmit: function() {
$('form').find('input').val('Wait...');
},
success: function(data) {
$('body').html(data);
}
});
return false;
});
,这是我的HTML标记:
<td>
<?php if($user['closed'] == 0):?>
<?php $attributes = ['class' => 'account']; ?>
<?php echo form_open('admin/closeAccount', $attributes);?>
<input type="hidden" name="user_id" value="<?=$user['user_id']?>"/>
<input type="hidden" name="user_email" value="<?=$user['email']?>"/>
<input type="submit" name="close_account" class="btn btn-danger btn-sm" id="trigger" value="Close" >
<?php echo form_close();?>
<?php else:?>
<?php $attributes = ['class' => 'account'];?>
<?php echo form_open('admin/openAccount');?>
<input type="hidden" name="user_id" value="<?=$user['user_id']?>"/>
<input type="submit" data-loading-text="Odota..." name="open_account" class="btn btn-success btn-sm" id="trigger" value="Open" >
<?php echo form_close();?>
<?php endif ?>
</td>
问题在于,每次我尝试提交表单时,它现在都会将所有按钮的值更改为“等待...”,而不仅仅是我单击的按钮。我试过了
用$('form')
中的$(this)
替换$('form').find('input').val('Wait...');
,但这根本没有帮助我。
答案 0 :(得分:0)
试试这段代码
$( 'BTN。 ')VAL(' 等待...');
或
$( 'BTN-危险。 ')VAL(' 等待...');
或
$( 'BTN-SM。 ')VAL(' 等待...');
答案 1 :(得分:0)
如果我理解你,你只需要将选择器更改为 - $('input [type =“submit”]')。
所以它会 -
$('form').find('input[type="submit"]').val('Wait...');
或者 使用:submit选择器
答案 2 :(得分:0)
根据插件文档(http://malsup.com/jquery/form/#options-object) 传递给beforeSubmit回调的$ form应该允许您访问当前正在提交的表单。
尝试:
$('form').ajaxForm({
beforeSubmit: function(arr, $form, options) {
$form.find('.btn').val('Wait...');
},
success: function(data) {
$('body').html(data);
}
});
答案 3 :(得分:0)
尝试为CSS选择器添加更多特异性。在你的ajaxForm()调用中,尝试这个来改变提交按钮值:
$(this).find('input[type="submit"]').val('Wait...');
答案 4 :(得分:0)
您的按钮有ID,为什么您没有使用该选择器?
$("#trigger").val("Wait...");
表单本身是否通过ajax加载?如果是,那就委托。
$(document).on("customevent", "#trigger", function() {
$(this).val("Wait...");
});
然后在beforesubmit中只需$(document).trigger(&#34; customevent&#34;);