select2()は関数ではありません
-
21-12-2019 - |
質問
だから私はそれを私のフォルダに入れることによって "インストールされた"あなたのサイトにそれをロードした(ロードされているすべてのスクリプトが表示されることができる)私のサイト上にそれをロードしました.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();
.