jquery:select选项所选属性在更改时未更改

jquery:select选项所选属性在更改时未更改,jquery,postback,option,selected,Jquery,Postback,Option,Selected,我的问题是我有一个dropdownlist,它的SelectedValue在回发时没有传递给ASP.NET。在从页面中提取jQuery更改处理程序并隔离一个选项的选择之后,我可以看到即使THO“:选择”给了我新选择的选项,它不粘,所以空白选项值被传递回服务器。 这个JSFIDLE重现了这个问题。从列表中选择一个选项,然后单击go并查看警报框中显示的html,以了解我所关注的内容 以下是一个独立的页面版本: <script type="text/javascript" src="htt

我的问题是我有一个dropdownlist,它的SelectedValue在回发时没有传递给ASP.NET。在从页面中提取jQuery更改处理程序并隔离一个选项的选择之后,我可以看到即使THO“:选择”给了我新选择的选项,它不粘,所以空白选项值被传递回服务器。 这个JSFIDLE重现了这个问题。从列表中选择一个选项,然后单击go并查看警报框中显示的html,以了解我所关注的内容

以下是一个独立的页面版本:

<script type="text/javascript"   src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $('#ddl').on('change', function (e) {
       $('.sv').text($(this).find(":selected").attr('value'));
       });
$('#go').click(function() { alert($('#ddl').html()) });
       });
</script>
<select name="ddl" id="ddl">
<option selected="selected" value="">-- Choose --</option>
<option value="1">Degree</option>
<option value="2">HND</option>
<option value="16">HNC</option>
</select>
<div><span>SelectedValue: </span><span class="sv"></span></div>
<div><input id="go" type="button" value="go"/></div>

jquery中的.html将返回您初始化的任何数据,因为它使用浏览器的
innerHTML
属性,但如果您尝试提交数据,则不会出现问题。因此,不要担心它会在更改时在DOM中更改,下面是一个证明:

<form class='test'>
<select name="ddl" id="ddl">
    <option selected="selected" value="">-- Choose --</option>
    <option value="1">Degree</option>
    <option value="2">HND</option>
    <option value="16">HNC</option>
</select>

$(function () {
    $('#ddl').on('change', function (e) {
        $('.sv').text($(this).find(":selected").attr('value'));
    });
    $('#go').click(function () {
        alert($('#ddl').html())
    });
    $('.test').submit(function(e){
        e.preventDefault();
        console.log($(this).serializeArray());
    });
});

将您的代码放在代码的后面。好的,谢谢,那么我如何找出为什么在表单发回时,DropDownList.SelectedValue=“”?发回是什么意思?这是一个ASP.NET WebForms应用程序。dropdownlist在服务器端由数据库填充。选择选项后,单击按钮会导致回发。此时,所选值已返回到“”。但没关系,我发现了问题。从Page_load调用了一个函数,该函数显式设置SelectedValue=“”。我只是没想到马上去找它。@twelveFunKeys-太好了,希望我能帮你。当然,非常感谢你。尽管这个问题实际上很愚蠢,但我在路上学到了很多。干杯
<form class='test'>
<select name="ddl" id="ddl">
    <option selected="selected" value="">-- Choose --</option>
    <option value="1">Degree</option>
    <option value="2">HND</option>
    <option value="16">HNC</option>
</select>

$(function () {
    $('#ddl').on('change', function (e) {
        $('.sv').text($(this).find(":selected").attr('value'));
    });
    $('#go').click(function () {
        alert($('#ddl').html())
    });
    $('.test').submit(function(e){
        e.preventDefault();
        console.log($(this).serializeArray());
    });
});
0: Object
   name: "ddl" 
   value: "2" // I selected your second option while testing