1

我有多个文本框,每个文本框都有一个相关的隐藏字段,隐藏字段的 ID 是字符串与模型 ID 的串联(例如:“ FormState25”)

更改文本框时如何传递隐藏字段的 ID?我正在使用以下代码来检测文本框更改:

$("#body-content-container").on('change', 'input[type="text"]', function () {
    $("#FormState").val('dirty');
});
4

4 回答 4

1

您可以使用this来引用定义匿名函数的元素,例如:

$("#body-content-container").on('change', 'input[type="text"]', function () {
    $("#FormState" + this.attr('id')).val('dirty');
});
于 2012-11-25T08:04:12.297 回答
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");
});

希望这会有所帮助。

于 2012-11-25T08:24:00.960 回答
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文本框中获取相应隐藏字段的属性并更改其值。试试这个,让我知道..

于 2012-11-26T11:22:01.927 回答
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>
于 2012-11-26T02:17:30.637 回答