我有多个文本框,每个文本框都有一个相关的隐藏字段,隐藏字段的ID是字符串与模型ID的串联(例如:“FormState25
”)
如何在更改文本框时传递隐藏字段的ID?我正在使用以下代码来检测文本框更改:
$("#body-content-container").on('change', 'input[type="text"]', function () {
$("#FormState").val('dirty');
});
答案 0 :(得分:1)
您可以使用this
来引用定义匿名函数的元素,例如:
$("#body-content-container").on('change', 'input[type="text"]', function () {
$("#FormState" + this.attr('id')).val('dirty');
});
答案 1 :(得分:1)
试试这个:
$("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");
});
希望这可以提供帮助。
答案 2 :(得分:1)
您可以向文本框标签本身添加自定义属性,其中包含隐藏字段的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
属性并更改其值。试试这个让我知道..
答案 3 :(得分:0)
这是我过去使用过的另一个技巧。将两个相关的输入字段括在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>