2010-09-28 51 views
5

我已經實現自動完成,並且選擇了項目後,我在與標籤與在文本框中的值的麻煩。當我在一個郵政編碼型,i看到標籤在下拉:JQuery用戶界面自動完成與.net MVC:選擇時,如何顯示標籤,但保存價值

但我選擇一個之後,代替標籤在文本框中示出,該值(這是ID,需要保存到數據庫中)顯示:

如何仍顯示標籤選中它後,但是當被保存形式,它通過ZipCodeID的領域?

這裏是我的控制器方法:

public JsonResult FindZipCode(string term) 
    { 
     VetClinicDataContext db = new VetClinicDataContext(); 

     var zipCodes = from c in db.ZipCodes 
         where c.ZipCodeNum.ToString().StartsWith(term) 
         select new { value = c.ZipCodeID, label = c.ZipCodeNum}; 

     return this.Json(zipCodes, JsonRequestBehavior.AllowGet); 
    } 

這是我的標記:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#ZipCodeID").autocomplete({ 
        source: '<%= Url.Action("FindZipCode", "Customers") %>', 
     }); 
    }); 
</script> 

<div class="ui-widget"><input type="text" name="ZipCodeID" id="ZipCodeID" /></div> 

編輯:這是我最後的工作代碼:

控制器:

public JsonResult FindZipCode(string term) 
    { 
     VetClinicDataContext db = new VetClinicDataContext(); 

     var zipCodes = from c in db.ZipCodes 
         where c.ZipCodeNum.ToString().StartsWith(term) 
         select new { value = c.ZipCodeID, label = c.ZipCodeNum}; 

     return this.Json(zipCodes, JsonRequestBehavior.AllowGet); 
    } 

和標記:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#ddZipCode").autocomplete({ 
      source: '<%= Url.Action("FindZipCode", "Customers") %>', 
      select: function(event, ui) { 
       var zipCodeID = parseInt(ui.item.value, 1); 
       $("#ddZipCode").val(ui.item.label); 
       $("#ZipCodeID").val(ui.item.value); 
       return false; 
      } 
     }); 
    }); 
</script> 

<div class="ui-widget"><input type="text" name="ddZipCode" id="ddZipCode" /></div> 
<%= Html.Hidden("ZipCodeID")%> 
+0

不是唯一的,足以不需要一個單獨的ID郵政編碼?我不能完全理解你爲什麼會想它,否則 – 2010-09-28 04:58:43

+0

好點!當我最初構建數據庫時,我對它很陌生。我將自己的郵政編碼設置爲具有自動遞增的ID,並不是真的認爲郵政編碼本身是唯一的。我現在可以回去改變它,但效果會在其他地方變成其他許多變化。我可能應該這樣做...... :)謝謝! – Ben 2010-09-28 14:34:14

+0

沒問題。你很瞭解事情並採取務實的態度。 – 2010-09-28 22:18:57

回答

6

短期改變你的模式不可使用不同的ID爲郵政編碼的...

爲郵編ID創建一個隱藏字段。更改選擇行爲以使用ID填充隱藏字段,並使用標籤填充可見字段。

The sample如何實現這個

你有沒有考慮,如果他們在輸入自己發生了什麼?

4

如果添加下面的行,它將顯示標籤,而不是id(我認爲應該是默認值,但是嘿)。

select: function (event, ui) { 
    event.preventDefault(); 
    event.target.innerText = ui.item.label; 
} 
+1

當我運行這個時,我得到了JavaScript的運行時錯誤:'錯誤:NO_MODIFICATION_ALLOWED_ERR:DOM例外7'任何想法如何解決這個問題? – Scott 2012-02-25 17:53:39

相關問題