我一直在努力改变触发我的ajax请求的按钮文本,以显示数据已成功发送到服务器。
使用laravel,我有这样的形式:
{{ Form::open(array('url' => 'panel/update/user', 'style' => 'display:inline', 'id' => 'ajax')) }}
{{ Form::hidden('action', 'confirm') }}
{{ Form::hidden('user', $confirmed->username) }}
<button class="btn-xs btn-default pull-right btn" style="padding: 1px 5px;" type="submit" data-after="User Confirmed">Confirm User</button>
{{ Form::close() }}
和javascript:
$('form#ajax').on('submit', function(){
var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};
that.find('[name]').each(function(index, value){
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
$('#console p').text(response); // This is logging the response from the server in a little console I built.
/*
| If data-after is set, then set the value to the button that triggered this
*/
if(this.attr('data-after').length) {
console.log(this);
}
}
});
return false;
});
ID为#ajax
的任何表单都将与ajax一起提交。我现在正在尝试实现一种方法来指定一些数据属性,以显示触发提交的当前按钮的文本,以显示提交的表单。因此,data-after="Submitted"
会更改Confirm
=&gt;中的文字。成功Submitted
。我想要每个表格,而不是改变所有。
这是 不 我在网页上的唯一表单。目的是从数据库中获取未经证实的用户,然后单击通过ajax将数据发送到服务器的按钮来确认它们。发送数据后,我想将按钮中的文本更改为data-after
中指定的文本。我有多种形式的 多个 数据 - 所以我不想更改所有按钮。这就是我被卡住的地方。我想证明表格已提交。
答案 0 :(得分:2)
您可以在提交事件开始时定位按钮,然后在success
方法中引用它。
缩写示例:
$('form#ajax').on('submit', function() {
var $button = $(this).find('button');
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
// button manipulation here
$button.attr('disabled', 'disabled').text('Submitted');
}
});
});