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

これは、私が過去に使用した別のトリックです。関連する 2 つの入力フィールドを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 に答える