我有多个文本框,每个文本框都有一个相关的隐藏字段,隐藏字段的 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');
});
您可以使用this
来引用定义匿名函数的元素,例如:
$("#body-content-container").on('change', 'input[type="text"]', function () {
$("#FormState" + this.attr('id')).val('dirty');
});
试试这个:
$("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");
});
希望这会有所帮助。
您可以将自定义属性添加到包含隐藏字段 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
文本框中获取相应隐藏字段的属性并更改其值。试试这个,让我知道..
这是我过去使用的另一个技巧。将两个相关的输入字段包含在一个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>