2014-02-25 5 views
1

내 문제는 SelectedValue가 포스트 백에서 ASP.NET에 전달되지 않는 드롭 다운 목록이 있음입니다. 페이지에서 jquery 변경 핸들러를 추출하고 옵션 선택을 분리하면 tho ": selected"도 새 옵션을 제공한다는 것을 알 수 있습니다. 스틱되지 않으므로 빈 옵션 값이 다음으로 전달됩니다. 서버.jquery : 선택한 선택 속성이 변경시 변경되지 않음

이 jsfiddle은 문제를 재현합니다. 목록에서 옵션을 선택한 다음 이동을 클릭하면 경고 상자에 표시된 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> 

내가 잘못 뭐하는 거지 :

http://jsfiddle.net/GAcEw/

여기에 독립 페이지 버전입니까?

건배, .pd.

편집 :

usercontrol의 코드 배후. 셋업은 마스터 -> 페이지 -> TabControl-> UserControl-> DropDownList로

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 


    JSHelper.Add("/scripts/jquery-stuff.js", Me.Page) 

    If Not IsPostBack Then 
     bindDDL(ddl, True, "") 

    End If 
End Sub 

Public Shared Sub bindDDL(ByRef _ddl As DropDownList, Optional ByVal _incBlank As Boolean = False, Optional ByVal _valBlank As String = "") 
    _ddl.Items.Clear() 
    If _incBlank Then 
     _ddl.Items.Add(New ListItem("-- Choose --", _valBlank)) 
    End If 
    _ddl.AppendDataBoundItems = True 
    _ddl.DataSource = QualificationTypeGetActive() 
    _ddl.DataTextField = "Description" 
    _ddl.DataValueField = "QualificationTypeID" 
    _ddl.DataBind() 

End Sub 
+0

포스트 코드는. –

답변

0

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

결과 : 코드의 부분 뒤에

0: Object 
    name: "ddl" 
    value: "2" // I selected your second option while testing 

Try it yourself

+0

그래, 고마워, 어떻게 양식을 다시 게시 할 때, 왜 DropDownList.SelectedValue = ""? – twelveFunKeys

+0

다시 게시한다는 것은 무엇을 의미합니까? –

+0

이것은 ASP.NET WebForms 앱입니다. 드롭 다운 목록은 데이터베이스에서 채워진 서버 측입니다. 옵션을 선택하면 버튼 클릭으로 포스트 백이 발생합니다. 그 시점에서 선택된 값은 ""로 되돌아갔습니다. 하지만 괜찮습니다. 문제를 발견했습니다. SelectedValue = ""를 명시 적으로 설정하는 Page_load에서 호출되는 함수가있었습니다. 나는 그 권리를 찾고 있다고 생각하지 않았습니다. – twelveFunKeys