通过ajax和jQuery根据获取结果选择值

时间:2013-12-31 12:09:59

标签: javascript jquery ajax

我对以下内容有点麻烦......

我有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);
        }
    }

感谢您抽出宝贵的时间......

1 个答案:

答案 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; }
    });