工具提示popover中的Bootstrap输入字段从输出html中删除

问题描述 投票:1回答:3

你好我使用bootstrap 4.3.1并包含popper 1.14.7。

通常我可以在弹出/工具提示的内容中添加输入字段。我不知道何时,但是当我在内容中输入输入字段时,只有文本可见。

当我查看源代码(编译的html)时,我可以看到popper或bootstrap删除了输入字段。我有什么不对吗?

    var options = {
        html: true,
        // content: function(){ return $(".amountElec.popup").html();},
        placement: "bottom",
        container: "body"
    };
    
    $(function(){
        $('#manualinput').popover(options);
    })
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>


<div id="manualinput" 
     data-container="body" 
     data-toggle="popover"  
     data-content="test <input name='test' type='text' value='2'>" 
     data-html="true" 
     data-placement="bottom">
     
     OPEN TOOLTUP
</div>
input bootstrap-4 tooltip popover
3个回答
1
投票

我找到了解决方案......

我的情况是这个添加到javascript:

        var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList;
        myDefaultWhiteList.input = [];

https://getbootstrap.com/docs/4.3/getting-started/javascript/#sanitizer


1
投票

你想的更容易:

sanitize: false

作为配置选项,如果你想要完全禁用清理。如果您只想调整白名单,那么您的解决方案就是正确的

https://github.com/twbs/bootstrap/blob/master/js/src/tooltip.js#L472


0
投票

在调试控制台中搜索后,我在bootstrap的tooltip.js中找到了一些东西。

content = sanitizeHtml(content,this.config.whiteList,this.config.sanitizeFn)

  setElementContent($element, content) {
    if (typeof content === 'object' && (content.nodeType || content.jquery)) {
      // Content is a DOM node or a jQuery
      if (this.config.html) {
        if (!$(content).parent().is($element)) {
          $element.empty().append(content)
        }
      } else {
        $element.text($(content).text())
      }

      return
    }

    if (this.config.html) {
      if (this.config.sanitize) {
        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)
      }

      $element.html(content)
    } else {
      $element.text(content)
    }
  }

sanitizeHtml函数删除输入字段:(。

© www.soinside.com 2019 - 2024. All rights reserved.