2015-06-17 12 views
8

Próbuję powiązać funkcję do pola wyboru, gdy coś jest wklejane do niego (wygląda jak pole wejściowe po dopuszczeniu wielu styl i select2: matcher/tokenize), ale w IE zawsze obcina każdy wklejony tekst, który zawiera nowy znak linii.Jak ustawić wartość wybierz, aby dopasować i tokenize jquery

<form method="POST" action="/run" class="ui-widget" onsubmit=" return confirmSubmit(this, 'run',true) "> 
    Editor: 
    <select name="editor" id="editor" multiple style="width: 200px"> 
     <option>ALL</option> 
    </select> 
     <input type="submit" value="Submit"> 
</form> 

bind('paste') nie wydają się działać na obiekcie <select> więc musiałem użyć bind('change')

var unitIds = ["Red","Yellow","Green"]; 

$.each(unitIds, function(i, f) { 
     $('select[name="editor"]').append($('<option>').text(f)); 
    }); 

$('#pastefromclip').select2({ 
    matcher: function(term, text) { 
        return text.toUpperCase().indexOf(term.toUpperCase()) === 0; 
       }, 
    tokenizer: function(input, selection, callback) { 
        if (input.indexOf(" ") < 0) return; 
        var parts = input.split(" "); 
       for (var i = 0; i < parts.length; i++) { 
        var part = parts[i]; 
        if(part.length > 0){ 
         if (unitIds.indexOf(part) == -1) { 
          alert('Invalid fields: ' + part); 
         } else { 
          callback({ 
           id: part, 
           text: part 
           }); 
          } 
         } 
        } 
       } 
}); 
$('#editor').bind('change', function (e) { 
      var clipped = window.clipboardData.getData('Text'); 
      clipped = clipped.replace(/(\r\n|\n|\r)/gm, " "); //replace newlines with spaces 
      //$(this).val(clipped); // this doesn't seem to work 
      var element = document.getElementById('editor'); 
      element.value = clipped; // doesn't seem to work either 
      return false; //cancel the pasting event 
     }); 
  1. Kopiuj i wklej następujący w wybranej dziedzinie:
    Red
    Żółty

  2. Wkleja tylko "czerwony" i pokazuje dopasowany obiekt. Nie rozpoznaje funkcji zmiany, dopóki nie wybiorę tego dopasowanego obiektu i nie zostanie onkenowany.

  3. Po rozpoznaniu tej zmiany przechodzi przez clipboardData i widzi zarówno czerwony, jak i żółty, ale nie może przypisać pola wyboru z tymi danymi.

    <script src="https://rawgit.com/free-jqgrid/jqGrid/master/plugins/jquery.jqgrid.showhidecolumnmenu.js"></script> 
    <script type="text/javascript" src="javascript/jqGrid/jquery-1.8.3.js"></script> 
    <script type="text/javascript" src="javascript/jqGrid/jquery-ui-1.9.2.js"></script> 
    <script type="text/javascript" src="javascript/toastr.min.js"></script> 
    <script type="text/javascript" src="javascript/adminConsole.js"></script> 
    <script type="text/javascript" src="javascript/select2.min.js"></script> 
    <script type="text/javascript" src="javascript/moment.min.js"></script> 
    <script type="text/javascript" src="javascript/jqGrid/ui.multiselect.js"></script> 
    <script type="text/javascript" src="javascript/jqGrid/grid.locale-en.js"></script> 
    <script type="text/javascript" src="javascript/jqGrid/jquery.jqGrid.min.js"></script> 
    
+0

dlaczego używasz 'select', dlaczego nie' input type = 'text''? Czerwony i żółty należy dodać do "wybierz" lub po prostu wymienić pierwszy element (* ALL *)? – befzz

+0

Tylko InternetExplorer: http://jsfiddle.net/fxrzm3tL/48/ – befzz

+0

, ponieważ pierwotnie potrzebowałem tylko pola wyboru, a następnie rozszerzyłem funkcję, aby móc dopasować i tokenizować. W CHROMie działało idealnie. Teraz chcę uniknąć konieczności zmieniania wszystkich wybranych funkcji. – user3710760

Odpowiedz

0

użytku TokenSeparators dla wielu wejść

See it Action

$(".js-example-tokenizer").select2({ 
    tags: true, 
    tokenSeparators: [',', ' '] 
}) 

Patrz rozdział Automatyczne tokenizacja w Select2 Tokenization

także wtedy, gdy Kopiuj wklej opcje (czerwony, zielony) don "zapomnij dodać", "w końcu

+0

otwierając twój link i wklejając tekst "ABC" (z nowymi znakami linii zamiast spacji) zostaje odcięte w punkcie A w IE – user3710760

Powiązane problemy