我对以下内容有点麻烦......
我有2种基本选择形式:
<select id="data" onchange="getMetals(this.value)">
<option value="-1">Select a color</option>
<option value="1">Red</option>
<option value="2">Blue</option>
</select>
<select id="dynaData">
<option value="-1">Please make a selection</option>
</select>
现在,第一个选择我通过“ajax”填充第二个选项上的选项,该部分工作正常,但第二个选择的一些选项有更多“选项”
所以当第二个选择被填充时,我得到类似的东西:
<select id="dynaData">
<option value="-1">Please make a selection</option>
<option value="1">Raw Metal</option>
<option value="2">Titanium</option>
<option value="3">Steel</option>
</select>
直到这一点,ajax工作正常,在ajax之前我使用直接SQL查询来填充选项,输出在任何其他jquery之前,现在,我必须首先执行ajax然后执行jQuery,这个jQuery的想法是获取用户正在选择的值,这样我就可以显示更多的选项......问题是即使是简单的.addClass也无法正常工作。流程如下:
HTML from PHP -- > Ajax to Populate Select boxes -- > Get Value from selected box
^ ^ ^
|________________________|_____________________________| <-- Working
^ ^
|_______________________| <-- Not Working
所以用户从第一个选择框中选择,然后填充第二个选择框,然后用户从第二个选择框中选择,然后我需要获取值,但是不起作用...
现在,起初我认为问题是因为ajax正在获取一个json数据来填充第二个选择框,所以我将其更改为原始html ... HTML是在第二个文件库上形成的第一次请求......
问题是在ajax被触发后,但是ajax是一个必需的函数。
每次执行ajax时死掉的脚本是:
var hash = jQuery.noConflict();
hash("select").change(function(){
var mSt = $(this).find("option:selected").val(); // Value from 2dn select
if (mSt == 3){
$("#noShow").css('border', '1px solid red');
return false;
} else { $("#noShow").css('border', '1px solid green'); return true; }
});
我为了更好地理解而做了这个,所以,在ajax之前这段代码运行正常,但是在ajax填充第二个框之后它就会死掉!我做了一点“调试”但是eveything似乎工作得很好,然后我认为可能存在java冲突但是没有,根本没有冲突。
我真的无法理解,如何获得价值...... 任何帮助将不胜感激......
请记住,第二个框没有选项,选项来自第一个框的ajax请求...我的ajax非常简单......
function getMetals(Metals) {
var strURL ="ajax/metal.php?val="+Metals;
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.status == 200) {
document.getElementById('metals').innerHTML=req.responseText;
}
};
req.open("GET", strURL, true);
req.send(null);
}
}
感谢您抽出宝贵的时间......
答案 0 :(得分:1)
使用.on
通过动态添加的元素来连接事件。
尝试,
var hash = jQuery.noConflict();
hash(document).on('change','select',function(){
var mSt = $(this).find("option:selected").val(); // Value from 2dn select
if (mSt == 3){
$("#noShow").css('border', '1px solid red');
return false;
} else { $("#noShow").css('border', '1px solid green'); return true; }
});