2

搜索和搜索..找不到参考..但这一定很明显。

2 选择列表

如果结果如果第一个是澳大利亚,则保留第二个列表

如果不是澳大利亚,则用输入框替换第二个列表。

如果您选择澳大利亚以外的地方,效果很好。但是,如果您再次选择澳大利亚,则不会发生任何事情。

一些调试警报以查看是否正常工作,并且在最后警报中显示我正在寻找或替换的 div 的值。

一些帮助将不胜感激。

提前致谢

PS 对格式感到抱歉 - 将 html 代码放入帖子中很费时间

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Untitled Document</title>
            </head>

            <body>

            <h4>Shipping:</h4>
            <form id="_shipping" class = "shipping-form" method="post" action="payments">

             <Select name ='country' id='country'> 
             <option value='Australia'>Australia </option>
             <option value='USA'>USA </option>
             <option value='Canada'>Canada </option>
             </Select>
             <div id='states' class='states'>
             <select name='state' id='state' class = 'state'>
             <option value='NSW'>NSW </option>
             <option value='ACT'>ACT </option>
             <option value='WA'>WA </option>
             </select>
             </div>

             <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.min.js'> </script>
             <script type="text/javascript">
             $(document).ready(function() {
                 var bob = $('div#states').html();
                 $('#country').change(function() {
                     var brm = $('#country').val();

                     alert(bob);
                     if(brm === "Australia") {
                         alert('if '+brm);
                         alert('wtf: \r\n' +$('#states').html);

                        $('div#states').empty().html(bob);      //html(bob);


                     } else
                     alert('else '+brm);

                        $('div#states').html("Enter State: <input name = 'state' id = 'state'>");


                 });


                 });

              </script>

            </body>
            </html>
4

1 回答 1

0

您的问题是,一旦将 html 设置为文本输入,您从一开始就有的选择列表就消失了。您可以将其保存以备后用,从 Javascript 创建选择,或者从不实际删除它。

这是一个“通过 Javascript 创建”的解决方案:

$("#country").change(function() {
    var brm = $(this).val();
    var output = ''; 
    if(brm === "Australia") {
        // Create "states" array
        var states = ["NSW", "ACT", "WA"];
        // Start select tag
        output = '<select name="state" id="state">';
        // Loop through all states and add the options
        for (var i = 0 ; i < states.length ; i++)
            output += '<option value="' + states[i] + '">' + states[i] + '</option>';
        // Close select tag
        output += '</select>';
    } else {
        // Create text input
        output = 'Enter State: <input name="state" id="state">';
    }
    // Set the output
    $('div#states').html(output);
}).trigger("change"); // Trigger the event, so that it runs on page load​​​

JsFiddle:http: //jsfiddle.net/aebWm/

或者,如果您想保存选择然后重置它:

var originalStates =  $('div#states').html();

$("#country").change(function() {
    if($(this).val() === "Australia") {
        $('div#states').html(originalStates)
    } else {
        $('div#states').html('Enter State: <input name="state" id="state">');
    }
});​
于 2012-10-13T02:54:23.770 回答