繁体   English   中英

jquery - 添加/删除/更改输入文本的部分值

[英]jquery - add/remove/change part of the value of an input text

我正在使用这个插件: http//loopj.com/jquery-tokeninput/做一个建议字段,用户可以开始输入,选择他们想要的项目,他们可以添加多个建议。

这个插件有一个onAdd和一个onDelete回调。

我想要做的是,onAdd,我想将元素id存储在隐藏输入的值中。 他们可以添加多个项目,因此输入值最终为:123,145,875,968

还行吧。 现在我需要帮助的地方是OnDelete事件。 我需要更新输入值以反映他们删除项目的事实。

这是代码

onAdd: function (item) {
   var value = $("#itemID").val();
   $("#itemID").val(value + item.id + ',');
},
onDelete: function (item) {
   ???? In word: Remove that specific ID from the input value, but keep the other value
}

PS。 我将这些ID存储在输入中,以便以后轻松获取ajax调用值的列表。 现在,我不确定这是否是最好的方式,但是,是的,这就是我认为的“新”程序员:)

提前致谢

我不认为您需要在添加或删除项目时存储建议字段的总值。 每当您准备好进行ajax调用时,请使用以下命令获取建议字段的当前值:

selector.tokenInput("get");

这是在“方法”部分中引用的jQuery Tokeninput页面上记录的。 这将获得值的JSON表示,如下所示:

[{id: 0, name: "something"},{id: 1, name: "something else"}]

然后你可以循环遍历它,抓住id(如果这就是你想要的),并将它们连接成一个字符串并通过AJAX提交它们。

必要时序列化。 如果您要对数据进行额外的工作,请将其保留为最容易完成工作的格式,直到您需要对其进行序列化。

更新

看看那个插件文档:

selector.tokenInput("get"); 从tokeninput获取所选标记的数组(每个项目都是{id: x, name: y}类型的对象)。

尝试这样的事情:

// do this at time of submit()
var tokens = $('#your-plugin-element-id').tokenInput( 'get' );
var output = [];
$.each( tokens, function( i, el ) {
  output.push( el.id );
});
var outputString = output.join( ',' );

然后,您不必在单独的隐藏输入中跟踪。

更清洁,但使用map()可能更难理解

var tokens = $('#your-plugin-element-id').tokenInput( 'get' );
var outputString = $.map( tokens, function( el ) { return el.id; } ).join( ',' );

-

这应该工作:

var itemList = $('#itemID').val().split(',');
for( var i=0 ; i<itemList.length ; i++ ) {
  if( itemList[i] == item.id ) {
    itemList.splice( i, 1 );
    break;
  }
}
$('#itemID').val( itemList.join( ',' ) );

编辑:这是对现有代码的快速修复,但在提交时序列化会更好,如其他评论中所述

检查此代码

                onDelete: function (item) {
                var idd  = item.id;
                alert (idd);
                var value = $("#itemID").val();  
                var x = value.replace( idd+ ',', "" );
                $("#itemID").val(x);
                }

itemID是隐藏的输入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM