修改第三方JS发送的数据

时间:2013-07-24 22:17:36

标签: javascript jquery

我正在客户的网站上工作,该网站使用第三方库来填充SELECT dropdown中的代码:

 <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>

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

我想根据价值删除条目。

选择美国的输出将是这样的:

<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...

填好后,我想根据价值删除一些。

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

$("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条目。

1 个答案:

答案 0 :(得分: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();
    });
});