2014-04-23 73 views
1

我有一個DropDownList有兩個選項是和不。我現在正在使用onchange事件,但它在第一次在下拉列表中加載值yes時未被觸發(因爲值尚未更改)。我想根據當前值設置控件的可見性下拉列表。選擇DropDownList值的Javascript事件?

ASPX

<asp:DropDownList ID="ddlAriba" onchange="ddlAribaChange(this);" runat="server"    ClientIDMode="Static" CssClass="FormText" AutoPostBack="True"> 
    <asp:ListItem Value="Y" Selected='True'>Yes</asp:ListItem> 
    <asp:ListItem Value="N">No</asp:ListItem> 
</asp:DropDownList> 

JAVACRIPT

function ddlAribaChange(ddl) { 
    var txtAribaDocumentNumber = document.getElementById("txtAribaDocumentNumber"); 
    var ddlAribaReason = document.getElementById("ddlAribaReason"); 
    //alert(ddl.options[ddl.selectedIndex].text); 
    if (ddl.options[ddl.selectedIndex].text == 'Yes') { 
     txtAribaDocumentNumber.style.display = 'inherit'; 
     ddlAribaReason.style.display = 'none'; 
    } else { 
     txtAribaDocumentNumber.style.display = 'none'; 
     ddlAribaReason.style.display = 'inherit'; 
    } 
} 
+0

http://stackoverflow.com/questions/11179406/jquery-get-value-of-select-onchange – setec

+0

你需要檢查它,當DOM已準備就緒。檢查我的答案。 – nrsharma

回答

0

在jQuery中就可以實現這樣的:

$(document).ready(function(){ 

    $('#ddlAriba').change(function(){ 

    alert($(this).val()); 

    }); 

}); 

或:

$(document).ready(function(){ 

    $('#ddlAriba').on('change',function(){ 

     alert($(this).val()); 

     }); 

}); 

如果沒有發射這種方式,使用委派事件是這樣的:

$(document).ready(function(){ 

    $(document).on('change','#ddlAriba',function(){ 

     alert($(this).val()); 

     }); 

}); 
+0

我不想這樣做onchange。因爲該頁面首次加載時不會觸發此事件。 – Arbaaz

+0

將其包裹在document.ready中查看編輯過的文章 –

+0

但是,如何在沒有人更改所選值的情況下觸發它? 默認情況下,下拉菜單的第一個值是第一個值「是」 – Arbaaz

0

我想這個問題是關係到一生頁。 也許最好是使用代碼隱藏而不是javascript顯示/隱藏你的[選擇]。

0

你需要調用函數時DOM準備

試試這個

$(document).ready(function(){ 
    ddlAribaChange($('#<%=ddlAriba.ClientID%>').val()); 
}); 

可能這會幫助你。

或者你可以把同樣的代碼$(document).ready()功能,只要你想在默認情況下該行爲時,在頁面加載

$(document).ready(function(){ 
    var txtAribaDocumentNumber = document.getElementById("txtAribaDocumentNumber"); 
    var ddlAribaReason = document.getElementById("ddlAribaReason"); 
    var ddl = $('#<%=ddlAriba.ClientID%>'); 
    //alert(ddl.options[ddl.selectedIndex].text); 
    if (ddl.options[ddl.selectedIndex].text == 'Yes') { 
    txtAribaDocumentNumber.style.display = 'inherit'; 
    ddlAribaReason.style.display = 'none'; 
    } 
    else { 
    txtAribaDocumentNumber.style.display = 'none'; 
    ddlAribaReason.style.display = 'inherit'; 
    } 
}); 
0

你只需要調用ddlAribaChangeDOM準備並通過ddlAriba DOM目的。因爲您有ClientIDMode="static",您不需要在javascript中訪問ClientID以獲取DOM對象。

$(document).ready(function(){ 
    ddlAribaChange(document.getElementById('ddlAriba')); 
});