2011-04-21 77 views
0

我有一個包含表單的mvc 3剃鬚刀視圖。在這種形式下,我有一個輸入字段,每次在下拉列表中進行新選擇時(通過對控制器的ajax請求),其值都會發生變化。這是工作和輸入更新如預期的頁面上。使用jQuery更改輸入標籤的值字段

但是,當使用Firebug查看錶單時,我可以看到html內的基礎輸入值字段沒有更改。所以當我提交表單時,該字段的值就是原始值。

這裏是我的文本框和jQuery函數被調用的下拉列表更改事件:

function updatePageSizeValues() { 
     var pageSizeId = $jq("#ddlPageSize").val(); 
     $jq.getJSON("/Templates/GetPageSizeByPageSizeId/" + pageSizeId, null, updateFields); 
    }; 

    updateFields = function (data) { 
     $jq("#PaperHeight").val(data.Height); 
     $jq("#PaperWidth").val(data.Width); 
    }; 

    @Html.TextBoxFor(t => t.PaperHeight) @Html.TextBoxFor(t => t.PaperWidth) 

我已經看過了很多關於這裏的文章和更廣泛的網絡,仍然不能得到這個工作。任何想法都將非常感激。提前致謝。

回答

0

對於任何遇到此問題的人,我終於找出答案。這是一個防止DOM更新的Firebug中的錯誤(See this StackOverflow question)我在Chrome中測試了它的功能,並且它工作正常。然後我關閉了Firebug,然後在Firefox中工作。

還要感謝那些幫助我提出建議的人。

1

在jQuery中,當您執行$(myInput).val(value)時,它會修改dom中輸入元素的基礎屬性值。 所以當你提交它應該是通過的新值。 嘗試查看按提交時發送的HttpRequest。

在我看來,它是在您的服務器端問題所在。您確定在閱讀實際發送的值之前沒有執行綁定? (我真的不知道asp.net MVC是如何工作的)。

+0

感謝您的支持。我看着小提琴手中的httpRequest,它似乎沒有將值發送回控制器。當我獲得更多信息時,我會進行調查和評論。 – Cragly 2011-04-21 21:22:53

0

您的代碼看起來很好,所以這只是一個猜測,但從服務器返回的JSON格式錯誤,可能導致無聲失敗。

嘗試運行上面的.get而不是.getJSON,並看看Firebug中的XMLHttpRequest,或者乾脆添加一個console.log(data);命令到您的updateFields函數進行調查。

+0

謝謝Spencer,我在Firefox中使用了JSONView,並且返回的JSON格式良好,正如我所提到的,值在用戶界面上更新,而不是基礎html。希望JSONView足以驗證返回的JSON。我也可以登錄到Firebug,以便了解我得到和更新的內容,當我知道更多時。 – Cragly 2011-04-21 21:26:07