1

このプラグインを使用する https://github.com/aehlke/tag- ちなみに、それは非常にクールです。

問題:

        <input type="hidden" name="tags" id="mySingleField" value="Apple, Orange" disabled="true">
        Tags:<br>
        <ul id="mytags"></ul>

<script type="text/javascript">
    $(document).ready(function () {
        $("#mytags").tagit({
            singleField: true,
            singleFieldNode: $('#mySingleField'),
            allowSpaces: true,
            minLength: 2,
            removeConfirmation: true,
            tagSource: function (request, response) {
                //console.log("1");
                $.ajax({
                    url: "../City/GetList",
                    data: { term: request.term },
                    dataType: "json",
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.label + " (" + item.id + ")",
                                value: item.value
                            }
                        }));
                    }
                });
            }
        });
    });



</script>

タグを付けると、値を選択し、値属性のCSV形式で非表示フィールドに値を追加します。代わりにIDを実行したいのですが、誰かが方法を知っていますか?

4

2 に答える 2

1

ここにいくつかのことがあります。パラメータをアンダースコアに設定することで、CSVの代わりに区切り文字を任意に設定できます。

$("#mytags").tagit({
  ...
  singleFieldDelimiter: '_',
  ...

次に、197行目のtag-it.jsファイルを変更して、ID属性を使用するように指定できます。

変化する:

var tags = node.val().split(this.options.singleFieldDelimiter);

することが

var tags = node.attr("id").split(this.options.singleFieldDelimiter);

したがって、非表示フィールドを次のように変更したとします。

<input type="hidden" name="tags" class="mySingleField" id="Apple_Orange_Banana" value="Apple_Orange" disabled="true">

目的の出力を取得するには、JavaScriptをそのまま変更します。

    $(document).ready(function () {
        $("#mytags").tagit({
            singleField: true,
            singleFieldNode: $('.mySingleField'),
            singleFieldDelimiter: '_',
            allowSpaces: true,
            minLength: 2,
            removeConfirmation: true,
            tagSource: function (request, response) {
                //console.log("1");
                $.ajax({
                    url: "../City/GetList",
                    data: { term: request.term },
                    dataType: "json",
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.label + " (" + item.id + ")",
                                value: item.value
                            }
                        }));
                    }
                });
            }
        });
   });
于 2013-03-27T04:06:19.477 に答える
0

tag-it.jsファイルを変更します

264行目からのコメント

// that.createTag(that._cleanedInput());

// The autocomplete doesn't close automatically when TAB is pressed.
// So let's ensure that it closes.
// that.tagInput.autocomplete('close');

285行目あたり

var autocompleteOptions = {
    select: function(event, ui) {
        that.createTag(ui.item);                        

新しい関数を作成する

assignedTagsData: function(){
    // Only to be used when singleField option is not seleted
    var tags = [];
    this.tagList.children('.tagit-choice').each(function() {
        tags.push($(this).data('tag_item_data') );
    });
    return tags;
}

that.createTag(ui.item);
    

タグを作成する

var tag = $('<li></li>')
    .data('tag_item_data',item) //add this line
    .addClass('tagit-choice ui-widget-content ui-state-default ui-corner-all')
    .addClass(additionalClass)
    .append(label);
于 2013-03-29T03:04:36.613 に答える