重复的toastr错误消息

Jan*_*Dan 7 javascript toastr

我正在使用Toastr 2.1JavaScript库来显示瞬态用户输入验证错误消息.我将preventDuplicates选项设置为true.它无法正常工作 - 当用户快速连续点击验证按钮时,我仍然会看到重复的消息(点击速度超过'超时').

这是我的toastr默认值:

function getDefaults() {
    return {
        tapToDismiss: true,
        toastClass: 'toast',
        containerId: 'toast-container',
        debug: false,

        showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
        showDuration: 300,
        showEasing: 'swing', //swing and linear are built into jQuery
        onShown: undefined,
        hideMethod: 'fadeOut',
        hideDuration: 1000,
        hideEasing: 'swing',
        onHidden: undefined,

        extendedTimeOut: 1000,
        iconClasses: {
            error: 'toast-error',
            info: 'toast-info',
            success: 'toast-success',
            warning: 'toast-warning'
        },
        iconClass: 'toast-info',
        positionClass: 'toast-top-right',
        timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky
        titleClass: 'toast-title',
        messageClass: 'toast-message',
        target: 'body',
        closeHtml: '<button>&times;</button>',
        newestOnTop: true,
        preventDuplicates: true,
        progressBar: false
    };
}
Run Code Online (Sandbox Code Playgroud)

我是否需要进行任何其他更改以防止重复的错误消息?

小智 7

这可能有所帮助

toastr.options = {
"preventDuplicates": true,
"preventOpenDuplicates": true
};

toastr.error("Your Message","Your Title",{timeOut: 5000});
Run Code Online (Sandbox Code Playgroud)

  • 是的,这对我有帮助: this.toastr.toastrConfig.preventDuplicates = true; (2认同)

小智 1

我和你有同样的要求。下面是我的实现。看看是否可以帮助你。

function hasSameErrorToastr(message){

  var hasSameErrorToastr = false;

  var $toastContainer = $('#toast-container');
  if ($toastContainer.length > 0) {
    var $errorToastr = $toastContainer.find('.toast-error');
    if ($errorToastr.length > 0) {
      var currentText = $errorToastr.find('.toast-message').text();
      var areEqual = message.toUpperCase() === currentText.toUpperCase();
      if (areEqual) {
        hasSameErrorToastr = true;
      }
    }
  }

  return hasSameErrorToastr;
}

//Usage
var message = 'Error deleting user';
if (hasSameErrorToastr(message)) {
    toastr.error(message, title, errorToastrOptions);
}
Run Code Online (Sandbox Code Playgroud)

该代码用于检查是否存在显示相同消息的错误 toastr。如果没有显示相同错误的现有实例,我只会触发 toastr.error 。希望这可以帮助。代码可以进一步重构,但我会这样保留它,以便其他人更容易理解。