几秒后使用jQuery更改输入按钮文本

Chr*_*tow 8 forms jquery

我正在使用表单和jQuery在网站上进行快速更改.我想将按钮文字更改为"已保存!" 然后在几秒钟后将其更改回Update,以便用户可以再次更改该值.当然他们可以打到现在'保存!' 按钮再次,但它看起来不太好.

$("form.stock").submit(function(){
    // Example Post
    $.post($(this).attr('action'), { id: '123', stock: '1' });
    $(this).find(":submit").attr('value','Saved!');
    // This doesn't work, but is what I would like to do
    setTimeout($(this).find(":submit").attr('value','Update'), 2000);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

Sol*_*ogi 13

setTimeout的第一个参数是function.所以将你的代码包装在一个匿名函数中,你就可以了.

$("form.stock").submit(function(){
    // Example Post
    $.post($(this).attr('action'), { id: '123', stock: '1' });
    var submit = $(this).find(":submit").attr('value','Saved!'); //Creating closure for setTimeout function. 
    setTimeout(function() { $(submit).attr('value','Update') }, 2000);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

我现在无法测试此代码.如果它不起作用,请告诉我.

编辑:正如redsquare所建议的那样,从提交按钮本身创建闭包是有意义的.


小智 6

如果它实际上是一个"按钮"标签,那么你要改变它.

$('#button_id').html('New Text');
Run Code Online (Sandbox Code Playgroud)

当然,如果你正在为这个按钮执行onClick,那么你可以轻松地将(this)传递给函数作为对象和$(this).html('New Text'); 代替.

希望这有助于某人.