提问人:M Nabil Akbar 提问时间:7/18/2023 更新时间:7/18/2023 访问量:18
使用 AJAX 进行更改后无法启动 select2 类
Can't initiate select2 class after onchange with AJAX
问:
使用 AJAX 进行更改后无法启动 select2 类 这是主页,选择任何选项后我无法调用select2类,我什至不知道这叫AJAX是什么,或者只是纯javascript的常规POST
<select name="TDP_Code" class="form-control select2" id="TDP_Code" onchange="cek_TDP();">
<option value="select" selected>(Select TDP Grp No)</option>
<option value="1">Content 1</option>
<option value="2">Content 2</option>
</select>
<div id="result-tdp">
<div class="row mb-3 ml-4">
<div class="col-md-2">
<span>Talent</span>
</div>
<span>:</span>
<div class="col-md-9 ml-5">
<select class="form-control select3" style="width: 100%;" id="talent">
<option value="0">(Select Talent)</option>
</select>
</div>
</div>
</div>
<script>
$('.select2').select2({
theme: 'bootstrap4'
});
function postRequestTDP(strURL) {
var xmlHttp;
if (window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("POST", strURL, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
updatePageTDP(xmlHttp.responseText);
}
};
xmlHttp.send(strURL);
}
function updatePageTDP(str) {
document.getElementById("result-tdp").innerHTML = str;
}
function cek_TDP() {
id = document.getElementById("TDP_Code");
var url = "result-select-tdp.php?id=" + id;
postRequestTDP(url);
// alert(url);
}
</script>
结果选择-tdp.php 页面,无法在此处调用类 select2
<select name="result_select" class="form-control select2" id="TDP_Code" onchange="cek_TDP();">
<option value="select" selected>(Select TDP Grp No)</option>
<option value="result-1">Result 1</option>
<option value="result-2">Result 2</option>
</select>
使用AJAX发布后如何在不同的页面中调用这两个类
答:
0赞
Gökhan Baştürk
7/18/2023
#1
在将新 HTML 添加到 DOM 后,您可以尝试在 updatePageTDP() 函数中重新初始化 Select2:
> function updatePageTDP(str) {
> document.getElementById("result-tdp").innerHTML = str; //
> re-initialize Select2 $('.select2').select2({
> theme: 'bootstrap4' }); }
最好使用 ajax complete 事件来初始化 select2:
function postRequestTDP(strURL) {
var xmlHttp;
if (window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("POST", strURL, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
updatePageTDP(xmlHttp.responseText);
// re-initialize Select2
$('.select2').select2({
theme: 'bootstrap4'
});
}
};
xmlHttp.send(strURL);
}
评论