Boostrap标签输入& Bootstrap选择

时间:2017-11-18 15:28:06

标签: javascript jquery select drop-down-menu tags

在我的脚本中,我想确保一旦加载了标记,该网站就会更改下拉菜单中的值。但是,不起作用的是,该站点仅对页面上的最后一个下拉菜单执行操作。

使用的图书馆:

这是我的jquery代码:



$('[name^=tagsquiz]').on('itemAddedOnInit', function(event) {
	tags = $(this).val();
	idtags = $(this).prop('id').substr(13);
	$.ajax({
		type: 'POST',
		url: 'tags/select',
		data: {
			'tags': tags
		},
		success: function(array) {
			var html = '';
			var count = 1;
			$('#noqid_' + idtags).empty();
			$.each(JSON.parse(array), function(i, ob) {
				$.each(ob, function(ind, obj) {
					html += '<option value="' + count + '">' + (count++) + '</option>';
				});
			});
			$('#noqid_' + idtags).html(html);
			$('#noqid_' + idtags).selectpicker('refresh');
		}
	});
});
&#13;
<div class="row">
  <div class="col-md-4">
    <div class="form-group label-floating">
      <label class="control-label">Tags</label> <input class="tagsinput" data-color="rose" data-role="tagsinput" id="tagsfilterid_1" name="tagsquiz[]" type="text" value="test">
    </div>
  </div>
  <div class="col-md-4">
    <div class="form-group label-floating">
      <label class="control-label">Select</label> <select class="selectpicker" data-none-selected-text="NO RESULT" data-size="7" data-style="select-with-transition" id="noqid_1" name="noq[]">
      </select>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-md-4">
    <div class="form-group label-floating">
      <label class="control-label">Tags</label> <input class="tagsinput" data-color="rose" data-role="tagsinput" id="tagsfilterid_add" name="tagsquiz[]" type="text" value="second test, wow">
    </div>
  </div>
  <div class="col-md-4">
    <div class="form-group label-floating">
      <label class="control-label">Select</label> <select class="selectpicker" data-none-selected-text="NO RESULT" data-size="7" data-style="select-with-transition" id="noqid_add" name="noq[]">
      </select>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

ajax后接收示例数组:

{"questions":{"0":{"qid":"48"},"2":{"qid":"50"}}}

祝你好运

2 个答案:

答案 0 :(得分:0)

我不熟悉这个小部件,但我怀疑你的问题在这里:

idtags = $(this).prop('id').substr(13);

$(this)返回的jQuery集合中有多少个元素?你的itemAddedOnInit函数执行了多少次?如果不止一次,每次idtags的值是否不同?

jQuery prop() method返回“匹配元素集中第一个元素的属性值。”无论如何,我怀疑idtags只有一个值,而且这一行......

$('#noqid_' + idtags)

只匹配一个元素。

更新

问题似乎源于未在以下行中使用var关键字...

tags = $(this).val();
idtags = $(this).prop('id').substr(13);

省略var会使它们成为全局变量,因此itemAddedOnInit的两个执行都会共享它们。

答案 1 :(得分:0)

这是因为您的所有标签都具有相同的属性。你必须使用JQuery的每个函数, 的 $('.control-label').each(function(){ // Your code here });