質問

だから私はそれを私のフォルダに入れることによって "インストールされた"あなたのサイトにそれをロードした(ロードされているすべてのスクリプトが表示されることができる)私のサイト上にそれをロードしました.js

私は彼らの文書に行き、それをコピーして$("#e9").select2();

を追加しました

しかし私がページをロードすると、次のエラーが発生します:

TypeError: $(...).select2 is not a function


$("#e9").select2();
.

他の誰かがこのようなものを経験していますか?

追加情報これは私のスクリプトです:

    jQuery(document).ready(function(){
    var max_amount = parseFloat($('#max_amount').val());
    $( "#item_amount" ).keyup(function() {
           if($(this).val() > max_amount){
            $(this).val( max_amount);
        }
        if( /\D/.test($(this).val()) ){
            alert('Må kun indeholde tal!');
            $(this).val('');
        }
        if($(this).val()== '0'){
            alert('Må ikke være 0!');
            $(this).val('');
        }
    });
    $("#e1").select2();

});
function addToBasket(){
    var amount = $('#item_amount').val();
    if(amount == ""){
        amount = 1;
    }

    if(amount > 0){
    $.ajax({
        type: 'POST',
        url: myBaseUrl + 'Products/addItemToBasket',
        dataType: 'json',
        data: {
            id: window.location.pathname.substring(window.location.pathname.lastIndexOf('/') + 1),
            amount: amount
        },
        success: function (data) {
            var urlToBasket = myBaseUrl+'Products/basket';
            var newAmount = parseInt(amount)
            var price = data[0]['Product']['pris'];
            var id = data[0]['Product']['id'];
            var dat = data;
            var tmp_basket_html = $('#basket_amount').html();
           if($('#basket_amount').html() !== " Tom"){
              $('#shopping_table_body').append(
                  "<tr id='"+id+"'>" +
                      "<td class='image'>" +
                      ""+
                      "</td>" +
                      "<td class='name'>" +
                      " "+data[0]['Product']['name'] +
                      "</td>"+
                      "<td class='quantity'>" +
                      "x "+amount +""+
                      "</td>"+
                      "<td class='total'>" +
                      ""+price*amount+
                      "</td>" +
                      ""+
                      "<td class='remove'>" +
                      "<input class='icon-remove' type='button' onclick='removeItemFromBasket("+id+")'>"+
                      "</td>"+
                      "</tr>"
              );
           }else{
               $("#shopping_menu").append(
                   "<ul class='dropdown-menu topcartopen'>"+
                       "<li id='basket_list'>"+
                      "<table id='shopping_table'>"+
                        "<tbody id='shopping_table_body'>"+
                       "<tr id='"+id+"'>" +
                       "<td class='image'>" +
                       ""+
                       "</td>" +
                       "<td class='name'>" +
                       " "+data[0]['Product']['name'] +
                       "</td>"+
                       "<td class='quantity'>" +
                       "x "+amount +""+
                       "</td>"+
                       "<td class='total'>" +
                       ""+price*amount+
                       "</td>" +
                       ""+
                       "<td class='remove'>" +
                       "<input class='icon-remove' type='button' onclick='removeItemFromBasket("+id+")'>"+
                       "</td>"+
                       "</tr>"+
                       "</table>"+
                       "</li>"+
                       "<div class='well pull-right'>"+
                       "<input type='button' onclick='goToBasket()' class='btn btn-success' value='Tjek ud'>"+
                       "</div>"+
                       "</ul>"

               )
           }
            updateTotal(amount,price);
            updateBasketAmount();
        }
    });
    }
    Notifier.success('Vare tilføjet', 'Tilføjet'); // text and title are both optional.
}
function updateTotal(amount, price){
    var price = parseFloat(price);
    var oldValue = parseFloat($('#basket_total_cost').html());
    var newPrice = amount*price+oldValue;
    $('#basket_total_cost').html(newPrice);
}
function updateBasketAmount(){
   var tmp =  $('#basket_amount').html();
    if(!isNaN(tmp)){
   var oldAmount = parseInt(tmp.substr(0,2));
    var i = oldAmount + 1;;
    $('#basket_amount').html(
        ""+i+" vare(r)"
    );
    }else{
        $('#basket_amount').html(
            "1"+" vare(r)"
        );
    }
}
function goToBasket(){
    window.location.href = myBaseUrl+'Products/basket';
}
.

役に立ちましたか?

解決

XCRUDでSELECT2を使い始めたときにこの問題を抱えていました。jQueryをロードすることでXCRUDを無効にすることで解決しましたが、2回目でした。そのため、ページでjQueryが2回ロードされていないことを確認してください。

他のヒント

SELECTボックスを選択したSELECT2をSELECT 2に囲んだJSファイルがSelect2 JSファイルの前にロードされている場合は、このエラーが発生します。 ファイルがこの順序である必要があります..

  • jQuery
  • SELECT2 JS
  • あなたのJS

同じ問題を抱えていました。遅延ローディングSELECT2

<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/select2.min.js" defer></script>
.

私はまた同じ問題に直面していました、そして、SELECT2を使用しているセレクタが存在しないかロードされていなかったため、このエラーが発生したことに注意してください。

だから

を使って$( "#セレクタ")が存在することを確認してください。
if ($("#selector").length > 0)
   $("#selector").select2();
.

jQuery Slimバージョンを使用してこのエラーを得ました。通常のjQueryバージョンを使用することによって、問題は解決されました。

config / innernition / development.rbにconfig.assets.debug = falseを入れる。

問題は非常に古いですが、今日数時間を過ごしたように、私はほんの数時間を費やしました。 コードの一部を動的に選択2にロードした後は、エラー "$(...)で新しいSelectBoxesで機能できませんでした。SELECT2は関数"。

パックされていないselect2.jsでは、主な関数を再処理するためのラインがあることがわかりました(私の3.5.4バージョンでは45行目です):

if (window.Select2 !== undefined) {
    return;
}
.

だから私はそれをそこにコメントし、select2.jsを使い始めました(ミリ版のバージョンの代わりに)。

//if (window.Select2 !== undefined) {
//    return;
//}
.

とそれはちょうどうまく機能し始めました、もちろんそれはパフォーマンスを緩和する数回の処理をすることができますが、私はそれを必要とします。

これが助けることを願っています、 vladimir

上記のエラーを与えている2つのjQueryスクリプトを参照するかもしれません。

select2.min.jsの代わりにselect2.full.min.jsファイルが機能しました。私は私が得たdistフォルダからコピーしたファイルを手動で定義しています github page また、SELECT2ファイルの前に1つのjQuery(document).ready(...)定義とjQueryファイルがインポートされていることを確認してください。

私のような初心者はこの質問に終わります。

"SELECT2が関数ではない"エラー:

で失敗する
document.getElementById('e9').select2();
.

これは機能します:

$("#e9").select2();
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top