当前位置: 首页 > 知识库问答 >
问题:

引导程序x-可编辑。以编程方式更改数据类型(删除select2数据类型)

松俊才
2023-03-14

我用的是引导https://vitalets.github.io/x-editable/index.html

这是我的html代码:

<a href="#" data-name="category" class="addon" data-value="{{$cat->id}}"
   data-pk="{{$cat->id}}" data-type="select2" data-title="Favor llenar los campos"></a>

javascript代码:

$('.addon').editable({
    placement: 'bottom',
    mode: 'inline',
    showbuttons: false,
    source: categories,
    select2: {
        width: 200
    },
    display: function (value) {
        var elem = $.grep(categories, function (o) {
            return o.id == value;
        });

        $(this).attr('data-value', value);
        $(this).parent().parent().find('.btnEdit').attr('href', '/wizard_product/' + product_id + '/category/' + value + '/edit');

        return $(this).text(elem[0].text);
    }
});

但是我想以编程方式更改为普通的x-editable元素,而不使用select2选项。

我尝试使用jQuery将a元素的data-type属性更改为text,但它不起作用。

$('a.addon').attr('data-type', 'text');

还尝试:

$('a.addon').select2('destroy');

还尝试:

$('a.addon').editable({type: 'text'});

但是这两个选项都不起作用。select2仍然处于活动状态。如何删除x-可编辑的select2选项?你能帮帮我吗拜托

共有1个答案

令狐俊风
2023-03-14

您必须结合您尝试过的东西——销毁默认的可编辑的X-实例,更改数据类型值,并在该元素上恢复可编辑的X-。

最简单的实现/例子是:

$('.addon').editable('destroy').data('type', 'text').editable({type: 'text'});

实际上,当您将X-editable重新应用为文本时,必须将其他设置放回原处:

$('.addon').editable('destroy');
$('.addon').data('type', 'text');
$('.addon').editable({
                placement: 'bottom',
                mode: 'inline',
                showbuttons: false,
                source: categories,
                type: 'text',
                display: function (value) {
                    var elem = $.grep(categories, function (o) {
                        return o.id == value;
                    });
                    $(this).attr('data-value', value);

                    $(this).parent().parent().find('.btnEdit').attr('href', '/wizard_product/' + product_id + '/category/' + value + '/edit');
                    return $(this).text(elem[0].text);
                }
            });

编辑:

我已经制作了一个演示,尽我所能反映您的设置,它似乎可以工作:

var categories = [{
  id: 'html',
  value: 'html',
  text: 'html'
}, {
  id: 'javascript',
  value: 'javascript',
  text: 'javascript'
}];

setupSelect2();

$('#useSelect2').click(function() {
  $('.addon')
    .data('type', 'select2')
    .editable('destroy');

  setupSelect2();
});

$('#useText').click(function() {
  $('.addon')
    .data('type', 'text')
    .editable('destroy');

  setupText();
});

function setupSelect2() {
  $('.addon').editable({
    mode: 'inline',
    placement: 'bottom',
    showbuttons: false,
    source: categories,
    select2: {
      width: 200
    },
    display: function(value) {
      var elem = $.grep(categories, function(o) {
        return o.id == value;
      });

      $(this).attr('data-value', value);

      if (elem[0])
        return $(this).text(elem[0].text);
    }
  });
}

function setupText() {
  $('.addon').editable({
    mode: 'inline',
    placement: 'bottom',
    type: 'text',
    showbuttons: false,
    source: categories,
    display: function(value) {
      var elem = $.grep(categories, function(o) {
        return o.id == value;
      });

      $(this).attr('data-value', value);

      if (elem[0])
        return $(this).text(elem[0].text);
    }
  });
}
<script src="https://vitalets.github.io/x-editable/assets/jquery/jquery-1.9.1.min.js"></script>
<link href="https://vitalets.github.io/x-editable/assets/select2/select2.css" rel="stylesheet" />
<script src="https://vitalets.github.io/x-editable/assets/select2/select2.js"></script>
<link href="https://vitalets.github.io/x-editable/assets/bootstrap300/css/bootstrap.css" rel="stylesheet" />
<script src="https://vitalets.github.io/x-editable/assets/bootstrap300/js/bootstrap.js"></script>
<link href="https://vitalets.github.io/x-editable/assets/x-editable/bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet" />
<script src="https://vitalets.github.io/x-editable/assets/x-editable/bootstrap3-editable/js/bootstrap-editable.js"></script>
<link href="https://vitalets.github.io/x-editable/assets/select2/select2-bootstrap.css" rel="stylesheet" />

<h3>Select 2</h3>
<a href="#" class="addon" data-type="select2" data-pk="1" data-title="Enter tags"></a>
<br>
<br>
<button id="useSelect2" class="btn btn-default">Use Select2</button>
<button id="useText" class="btn btn-default">Use Text</button>
 类似资料:
  • 我有这个提琴,你可以看到,当你为价格字段输入任何值时,它的弹出提示没有定位在文本上,因为当你为名称输入值时,它的数据类型是数字 https://jsfiddle.net/6da007fm/21/ 超文本标记语言 JS 这是一种正常的行为还是有解决办法。我在我的项目网页中使用它,一行有5列,因此看起来不是很整洁。 -谢谢

  • 这里需要一些帮助来消除这个错误。这是代码-#是运行出色的原始代码,我试图适应: 以下是错误消息: 文件“”,第14行,y=df.loc[df['Adj Close']] 文件"C:\用户\apros\Anaconda3\lib\site-包\熊猫\核心\indexing.py",第1424行,在getitem返回自己。_getitem_axis(maybe_callable,轴=轴) 文件“C:\

  • 我想内联编辑列表页上的变量使用引导x-edable。我以前使用过这个功能,但是在一个只有一个ID和一个值的表上运行良好。现在在这种情况下,用户点击内容概览页面中的用户名。单击后,用户名变成一个带有用户名的选择框。这工作得很好。但在保存时不存储数据。至少存储为0 他认为: 单击此按钮,它将变为(似乎可以): 激活选择框的脚本为: 保存后,使用内容控制器中的此功能: 真的希望有人能看到我哪里出错了,或

  • 问题内容: 我正在为android应用程序开发自动化测试(使用Robotium)。为了确保测试的一致性和可靠性,我想以干净状态(正在测试的应用程序)开始每个测试。为此,我需要清除应用数据。可以在“设置/应用程序/管理应用程序/ [我的应用程序] /清除数据”中手动完成此操作 以编程方式完成此操作的推荐方法是什么? 问题答案: 您可以使用包管理器工具清除已安装应用的数据(类似于按设备上应用设置中的“

  • 我正在构建一个应用程序,在注销后需要清除缓存和本地存储数据。 我的注销方法调用clearCache()方法。我正在使用cordova存储插件。 缓存和本地存储正在清理,但当我转到 设置- 如何像手动一样以编程方式清除应用程序数据?

  • 为什么我不能以这种方式使用引导可编辑表? 在这个小提琴https://jsfiddle.net/aleksacavic/03agu1ex/1/它的工作原理是,当单击时,表格单元格处于编辑模式。但相同的代码在我的网站上不工作?我错过了什么?如我所见,在我这边,当单击时,单元格不允许更改类,只有表线程被突出显示,其他元素(输入字段)不被创建。谢啦