2013-07-24 51 views
1

我一个客户的网站工作,它使用第三方库来填充dropdown在选择代码发送修改数据是:由第三方JS

<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已填充后运行该功能?

EDIT

也尝试:

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

+0

添加代码在最后一个方框只是半和报价之间(; X“)在第一个框中的代码的onchange ATTRIB不会忘记。以牙签挑选你的内部引号 – dandavis

+0

像这样:'}); $(“#fields_state> option [value * ='FL']”)。remove();“ >'? –

+0

是的,但没有删除引号:'#fields_state>选项[值* = \'FL']' – dandavis

回答

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(); 
    }); 
}); 
+0

这是一个不行,添加'.ready()'但是不会在更改后删除选项,如果它有助于选择标识为fields_state,请参阅编辑我已更改的内容 –

+0

我已编辑我的答案以包含标识的 –

+0

删除OnChange )''并且在'.ready()'中使用你的代码不起作用,我得到'Uncaught SyntaxError:Unexpected token}' –