2013-05-20 19 views
-1

我目前正在處理通過ajax發送數據的頁面,並使用響應來重置窗體中的控件。無法防止「onClick」執行後清除所選選項

當按鈕的onClick函數被調用時,它一切正常,但我在列表中選擇的值將被取消選中。

我翻遍了代碼,我可以看到選定的選項保持選中狀態,直到函數返回後的步驟。當最後一步運行時會導致我的選項變爲未選中狀態。

這裏是我使用

HTML代碼:

<button id="update" name="update" value="update" onclick="updateStudent(this, 'Student')">Update Student</button> 

的Javascript:

function updateStudent(obj, theTitle){ 

    var SID = sendForm(obj, theTitle); //ajax update. 

    // Select Student just updated 
    $('#sid option[value=' + SID + ']').prop('selected', 'true'); 
    $('#sid').click(); // Trigger select's OnClick method 
} 
+0

你想從ajax請求返回一些東西到'SID'嗎?如果是這樣,它將無法工作,因爲ajax是異步的。 – bfavaretto

+0

我正在返回一些東西,並且正在運行帶有「async:false」的ajax –

+1

您確定它正在返回您期望的內容嗎?設置一個斷點或console.log來確認。 – bfavaretto

回答

0

button元素,默認情況下,一個提交按鈕。如果添加

type="button" 

...它,例如:

<button id="update" type="button" name="update" value="update" onclick="updateStudent(this, 'Student')">Update Student</button> 
<!-- New bit -------^^^^^^^^^^^^^   --> 

...這將阻止其提交表單和重寫整個頁面。

+0

我有一個覆蓋提交'$(form [0])的函數。submit(function(e){e.preventDefault()})''我添加了'type =「按鈕'',但它仍然重寫頁面(儘管表單中的所有其他字段保留了我設置它們的值,除了select) –

+0

@ElCas:然後,您必須提供[short,self-contained example](http://sscce.org)顯示問題,該問題沒有足夠的信息來幫助你。如果您確實取消了表單提交,則不會刷新頁面,這表明問題出在代碼中,取消了提交。它適用於此,例如:http://jsbin.com/uwewan/1(來源:http://jsbin.com/uwewan/1/edit)。 –

+0

@ T.J.Crowder我用我的確切代碼和模擬ajax調用創建了一個測試,並且它正常工作[鏈接](http://jsbin.com/uwewan/6)。我想我將不得不看看繼續通過代碼,看看我能否找到這個問題的原因。 –

0

AJAX異步

您需要設置,在成功回調。

+0

我有我的代碼,設置成功回調函數中的所有表單域。 –