2013-06-18 70 views
0

我有以下的jQuery代碼:jQuery的 - 在選擇控制觸發更改事件 - 不能確定價值後

$("#ruletypes").change(function() {       
        var selectedtype = this.value;     
        var url 
        if (selectedtype == 1) { 
         url = url1; 
        } 
        else { 
         url = url2; 
        }      
        $.getJSON(
          url, 
          function(data) { 
           data = $.parseJSON(data); //converting to a javascript object vs. just string....         
           if (data !=null){ 
             //remove everything in current list. 
             $('#contact_types') 
               .find('option') 
               .remove() 
               .end()      
             //loop through results and add each one  
             $.each(data, function(i) { 
              $('#contact_types') 
               .append($("<option></option>") 
               .attr("value",this.id)             
               .text(this.description)); 

            }); //end .each        
           }//end if 
          }//end function(data) 
       );//end getJSON.  

       //set default values for contact type 
       if (selectedtype == 1) {     
        $('#contact_types').val(2).change(); 
       } 
       else { 
        $('#contact_types').val(1).change(); 
       } 
    });//end ruletypes.change 

$("#contact_types").change(function() { 
    var selectedtext = $("#contact_types option:selected").html(); 
    alert("select value of contact type is" + selectedtext); 
    alert(this.value); 
}); 

我的問題/問題是,一旦我programmtically觸發了contact_types選擇框更改事件,我似乎無法確定值是什麼.. 我有兩個警報語句分別返回undefined和null。

我也嘗試過.text()。

你能告訴我我的錯誤在哪裏嗎?我需要能夠確定contact_types中當前選定項目的值。

謝謝。

+0

你爲什麼不乾脆用'$(本).VAL()'? –

+0

爲什麼不首先使用控制檯 –

+0

腺嘌呤,如果我們是編碼方面的專家,我們不會尋求幫助。我會嘗試修復語法錯誤...但是你可以讓我們省略淫穢語言 –

回答

1

那麼,您應該使用this.value通過onchange事件獲取當前選定的值。修正了明顯的語法錯誤(未聲明的變量,缺少)}等):

$("#ruletypes").change(function() { 
    var selectedtype = this.value; 
    if (selectedtype == 1) { 
     $('#contact_types').val(2).change(); 
    } else { 
     $('#contact_types').val(1).change(); 
    } 
}); 

$("#contact_types").change(function() { 
    var selectedtext = $("#contact_types option:selected").html(); 
    alert("select value of contact type is" + selectedtext); 
    alert(this.value); 
}); 

演示:http://jsfiddle.net/fgQt3/

+0

嘿謝謝。我會試試看。實際上我確實已經聲明瞭所有內容......但是我試圖只給出相關的代碼,我忘記了向你展示聲明和關閉函數的內容。對於那個很抱歉。我的錯。 –

+0

tymeJV,我編輯了我的帖子以包含所有代碼。我已經嘗試了您的建議,但由於某種原因,我仍然收到了空值。 –

+0

嗯......控制檯中的任何東西? – tymeJV

0

您可以使用下列內容:

$("#contact_types").bind('change', function(e) { 
alert(e.target.options[e.target.selectedIndex].text); 
}); 

或簡單地使用:alert($(this).val());這種變化事件中。

+0

'live'?真的嗎?請在當前文檔中查找它。 –

+0

@dystroy,你說得對,'Live'可能會導致更改事件的問題。這是因爲'live'依賴於事件冒泡,'change'事件不會冒泡。因此我已將其編輯爲「綁定」方法。 –

相關問題