我有多個文本框,每個文本框有一個相關的隱藏字段,隱藏字段的ID是與模型的ID字符串的連接(例如:「FormState25
」)通過當文本框變爲隱藏標識
哪有當文本框被更改時,我傳遞隱藏字段的ID?我使用下面的代碼來檢測文本框的變化:
$("#body-content-container").on('change', 'input[type="text"]', function() {
$("#FormState").val('dirty');
});
我有多個文本框,每個文本框有一個相關的隱藏字段,隱藏字段的ID是與模型的ID字符串的連接(例如:「FormState25
」)通過當文本框變爲隱藏標識
哪有當文本框被更改時,我傳遞隱藏字段的ID?我使用下面的代碼來檢測文本框的變化:
$("#body-content-container").on('change', 'input[type="text"]', function() {
$("#FormState").val('dirty');
});
您可以添加自定義屬性的文本標籤本身包含隱藏字段的ID,例如:
在查看
@Html.TextBoxFor(model => model.Name, new { HiddenFieldId = "FormState" + Model.Id })
這樣,當一個文本框得到改變,你可以得到的Id你已經用它來存儲任何你想要的隱藏字段,然後修改JavaScript來處理隱藏字段的ID,像這樣:
的Javascript
$("#body-content-container").on('change', 'input[type="text"]', function() {
var hiddenId = $(this).attr("HiddenFieldId");
$("#" + hiddenId).val('dirty');
});
的JavaScript將從文本框中得到相應的隱藏字段的HiddenFieldId
屬性,並改變它的值。試試這個,讓我知道..
我想知道爲什麼我沒有想到這一點!這只是天才!非常感謝.. :) – SVI
您可以使用this
引用在其上定義的匿名功能的元件,如:
$("#body-content-container").on('change', 'input[type="text"]', function() {
$("#FormState" + this.attr('id')).val('dirty');
});
該文本框的標識不是隱藏字段的標識Id – SVI
那麼,您需要以某種方式將它們綁定在一起。如果你的ID有一個標準的命名約定,那麼你應該能夠找到相關的字符串作爲子字符串。更好的是,如果要在循環中構造元素,則可以使用循環索引來構造ID。祝你好運! –
試試這個:
$("input[type=text]").click(function(){
var hiddenId = "FormState" + $(this).attr("Id");
var hiddenField = $("#" + hiddenId);
hiddenField.val("dirty");
});
編輯:
如果你的隱藏領域呈現在輸入框後面,那麼你可以做以下事情:
$("input[type=text]").click(function(){
var hiddenField = $(this).next();
hiddenField.val("dirty");
});
希望這可以幫助。
問題是,texbox id與隱藏字段的id不同,因爲texbox是使用TextboxFor擴展創建的,隱藏字段不是模型的屬性,因此它使用隱藏擴展名創建,因此生成的id如下所示: 'VehicleModels_56998496-6f3f-4667-9c6b-339895b67c58__Name'和'FormState25'恭敬地爲文本框和隱藏字段 – SVI
如何在隱藏字段之前的文本框?這也有更低的搜索元素的時間複雜度! –
是輸入框和隱藏順序的順序嗎? –
這是我以前用過的另一個技巧。將兩個相關的輸入字段包含在div
(或其他)元素中。然後使用文本字段和隱藏字段是兄弟的事實來選擇正確的隱藏字段。也許是這樣的(注:我沒有測試過這個例子):
<div id="someId">
<input type="hidden" value="unchanged" />
<input type="text" value="some data" />
</div>
<script type="text/javascript">
var hiddenInput = $('#someId input:first')
var textInput = $('#someId input:last')
textInput.on('change', function() {
hiddenInput.val('modified');
});
</script>
你想通過身份證?回到控制器? –
在將表單提交給控制器之前,我想首先將隱藏字段的值(例如,從「未更改」更改爲「已修改」)使用JavaScript。 – SVI
ID是否來自您的文本輸入元素?在這種情況下,它是「25」嗎? –