1

我正在一个客户的网站上工作,该网站使用 3rd 方库来填充dropdownSELECT 中的代码是:

 <select border="0"  class="" id="country" style="" name="country"  size="1" onchange="ChangeCountryAndStateLabel(
                      {
                         'obj'       : this,
                         'targetObj' : '#state_cus1',
                         'sel'       : '',
                         'id'        : 'fields_state'
                      }
                      , 
                      {
                         'obj'       : this,
                         'targetObj' : '#fields_state_region',
                         'template'  : '<LABEL>:'
                      });" >
                <option value="" onclick="" >Select Country</option>
                <option value="38" onclick="" >Canada</option>
                <option value="223" onclick="" >United States</option></select>

这将填充:

<div id="state_cus1" style="width:165px;">
                <input type="text" id="fields_state" name="fields_state" value="" onchange="SetStateHid(this);"/>
            </div>

与所有州(如果我选择美国)。

然后我想根据值删除条目。

选择 US 的输出将是这样的:

<div id="state_cus1" style="width:165px;">
                <input type="text" id="fields_state" name="fields_state" value="" onchange="SetStateHid(this);"/>
            </div>
<option value="AL" onclick="">Alabama (AL)</option>
etc etc etc...

填充后,我想根据 Value 删除一些。

所以要删除佛罗里达,我试过:

$("select > option[value*='FL']").remove();

然而,由于 JS 是按顺序运行并且不等待的事实,这将不起作用,因为它在select填充之前运行。

我将如何仅select在填充后才运行该功能?

编辑

也试过:

$(document).ready(function() {

$("#fields_state").on("change", function(){
    $("#fields_state > option[value*='FL']").remove();
}

编辑 2

OnChange已被删除,代码已移至.ready()

   ll(document).ready(function() {
      ll("#country").change(function(){
        ChangeCountryAndStateLabel({
           'obj'       : this,
           'targetObj' : '#state_cus1',
           'sel'       : '',
           'id'        : 'fields_state'
        },{
           'obj'       : this,
           'targetObj' : '#fields_state_region',
           'template'  : '<LABEL>'
        });

        ll("#fields_state > option[value*='FL']").remove();
    });

此方法仍会填充select所有选项,但不会删除 FL 条目。

4

1 回答 1

0

放置这个:

$("select > option[value*='FL']").remove();

在这里面:

$("#country").on("change", function(){
    $("#fields_state > option[value*='FL']").remove();
}

只有在更改选择时才删除。把它放在你的 JS 中,你会很成功。

编辑

最好的解决方案是一起删除onchange所有内容。然后将代码放在你的 JS 中,如下所示:

$(document).ready(function() {
    $("#country").on("change", function(){
        ChangeCountryAndStateLabel({
           'obj'       : this,
           'targetObj' : '#state_cus1',
           'sel'       : '',
           'id'        : 'fields_state'
        },{
           'obj'       : this,
           'targetObj' : '#fields_state_region',
           'template'  : '<LABEL>'
        });

        $("#fields_state > option[value*='FL']").remove();
    });
});
于 2013-07-24T22:21:57.670 回答