更改文本框时传递隐藏的ID

时间:2012-11-25 07:45:32

标签: c# jquery asp.net-mvc asp.net-mvc-3

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

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

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

4 个答案:

答案 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>