【问题标题】:jquery - x-editable - reset 'new record' after submitjquery - x-editable - 提交后重置“新记录”
【发布时间】:2012-12-11 18:15:21
【问题描述】:

我已经尝试了几个小时来解决这个问题。

我有以下

http://vitalets.github.com/x-editable/docs.html#newrecord

新的记录模块/代码。它的功能是,一旦所有行都有数据并提交,它会保留其值,以便保持可编辑状态。

我尝试添加输入,在成功的 ajax 请求中选择清除代码,并尝试将 .editable 函数放入 ajaxComplete 函数中,以查看它是否会在提交时重新加载元素,但它没有。看演示。输入数据,然后提交。然后它使数据“永久”,以便它可以继续可编辑。

我已经删除了隐藏按钮的代码。

我想要它做的是,提交记录并重置,以便我可以提交另一个表单为“空”并返回默认值。

我正在开发一个设备跟踪器,如果技术人员能够一个接一个地输入记录,我会很高兴。我确定它是重置表单的简单修复,我只是想不通。

我附上了它的截屏视频。

http://www.youtube.com/watch?v=dPDuQCgOOSw

【问题讨论】:

  • P.S.它不是“真正”的一种形式。如果您在元素检查器中查看上面第一个链接上的代码,您将看到其指定的可编辑类识别的几个输入,这就是它们的提交方式。
  • 有人吗? :\ 我真的需要弄清楚如何重置这个元素。
  • 我假设您应该实现一个重置按钮?
  • 我想是这样的。它不是“形式”,所以这很困难。如果您查看创建新记录代码的第一个链接,我希望它在提交数据后“重置”。而不是保留提交的值。

标签: php jquery html ajax forms


【解决方案1】:

如果你看看“保存新用户button”是如何实现的,它只会选择类名myeditable的锚标签

要么将函数绑定到“重置”按钮,要么使用此脚本onclick

IF onclick:

jQuery.each($('.myeditable'),function() { 
    $(this).text('Empty') ; //this is your default text
});

OR as a function

function reset_myeditable()
{
    jQuery.each($('.myeditable'),function() { 
        $(this).text('Empty') ; //this is your default text
    });
}

并将其附加到 reset 按钮的 onclick 处理程序 我假设您将放置一个“重置”按钮

编辑

好的,放大你的$('#save-btn').click(function() success handler

    success: function(data, config) {
    if(data && data.id) {  //record created, response like {"id": 2}

    $(this).editable('option', 'pk', data.id);
    //remove unsaved class
    $(this).removeClass('editable-unsaved');
    //show messages
    var msg = 'New user created! Now editables submit individually.';
    $('#msg').addClass('alert-success').removeClass('alert-error').html(msg).show();
    $('#save-btn').hide(); 
    $(this).off('save.newuser'); 

/**this the edited part**/
  jQuery.each($('.myeditable'),function() { 
     $(this).text('Empty') ; //this is your default text
  });
/**end of edit**/      

} else if(data && data.errors){ 
           //server-side validation error, response like {"errors": {"username": "username already exist"} }
           config.error.call(this, data.errors);
       }               
   },

【讨论】:

  • 不需要重置按钮,我将在表单 ajax 成功时运行“重置”。这是新版本的链接。 youtube.com/watch?v=lMegyAhhSxk
  • 即使 元素为“空”,弹出字段似乎仍保留其值
  • 它是720p,将视频设置为720并使其全屏并暂停。我与第一个站点的原始代码没有太大变化。只是禁用了它隐藏提交按钮,并删除了成功警报。
  • 这里是使用您的代码在演示站点上进行的实时编辑。它会更改文本,但不会更改“缓存的”输入表单数据。 youtube.com/watch?v=4GPTyLAItrU
【解决方案2】:

由于这是一个热门问题,我在文档中添加了重置按钮。

$('#reset-btn').click(function() {
    $('.myeditable').editable('setValue', null) //clear values
        .editable('option', 'pk', null)         //clear pk
        .removeClass('editable-unsaved');       //remove bold css

    $('#save-btn').show();
    $('#msg').hide();
});

最好使用.editable('setValue', null) 而不是.text('Empty'),因为我们还需要重置内部值。
高温

【讨论】:

猜你喜欢
相关资源
最近更新 更多
热门标签