だから私はselect2をダウンロードしました。フォルダに入れて「インストール」し、コンソールをチェックするときにサイトにロードしました(ロードされているすべてのスクリプトを見ることができます)ファイルselect2.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を使い始めたとき、この問題が発生していました。 XCrudがJQueryをロードできないようにすることで解決しました。2回目で、bodyタグの下にロードしました。そのため、JQueryがページで2回ロードされないようにしてください。
Select2でselect2をバインドしたjsファイルがselect2 jsファイルの前にロードされている場合、このエラーが発生します。ファイルが次のような順序になっていることを確認してください。
私も同じ問題に直面しており、select2を使用しているセレクターが存在しないかロードされていないため、このエラーが発生したことに気付きました。
したがって、次のようにして$( "#selector")が存在することを確認してください。
if ($("#selector").length > 0)
$("#selector").select2();
同じ問題がありました。 select2の読み込みを延期して並べ替えた
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/select2.min.js" defer></script>
config.assets.debug = false
config/environments/development.rbにあります。
JQueryスリムバージョンを使用すると、このエラーが発生しました。通常のjQueryバージョンを使用することで、問題は解決しました。
この問題はかなり古いものですが、今日はかなり同じ問題を調査するために数時間を費やしたので、ちょっとしたメモを書きます。コードの一部を動的に読み込んだ後、select $ 2が新しい選択ボックスで「$(...)。select2は関数ではありません」というエラーで動作しませんでした。
パックされていないselect2.jsには、main関数の再処理を妨げる行があります(私の3.5.4バージョンでは45行にあります)。
if (window.Select2 !== undefined) { return; }
そこで私はそこにコメントし、(縮小版ではなく)select2.jsを使い始めました。
//if (window.Select2 !== undefined) { // return; //}
そして、それはうまく動作し始めました。もちろん、今では処理を数回実行してパフォーマンスを失うことがありますが、どうにかそれが必要です。
これがお役に立てば幸いです、ウラジミール
上記のエラーが発生している2つのjqueryスクリプトを参照している可能性があります。
私にとっては、_select2.min.js
_の代わりに_select2.full.min.js
_ファイルが機能しました。 github page から取得したdistフォルダーからコピーしたファイルを手動で定義しています。また、select2ファイルの前に1つのjQuery(document).ready(...)
定義とjqueryファイルがインポートされていることを確認してください。