1

テキストボックス内の値が変更されているかどうかを検出する必要があります。テキストボックスの内容が変更/変更された場合は、textBoxを表示して、変更に関するコメントをユーザーに入力させる必要があります。

これがShared/EditorTemplates/Addresses.cshtmlにある私のEditorTemplateページです

@Html.EditorFor(model => model.Address)
@Html.ValidationMessageFor(model => model.model.Address))
@Html.EditorFor(model => model.Comments,new{style="Visible:false" })
@Html.ValidationMessageFor(model => model.Comments ,new{style="Visible:false" })

これがMyPage.cshtmlで、上記のEditorTemplateを呼び出します

 @if (!UtilityHelper.IsNullOrEmpty(Model.AddressesRecords))
        {

             @Html.EditorFor(model => model.AddressesRecords)

         }

     <input type="submit" name="ButtonCommand" value="Save" />

ページが読み込まれると、複数のアドレステキストボックスが表示されます。ユーザーがアドレスTextBoxのいずれかに変更を加えると、すぐにその特​​定のアドレスTextBoxに対してCommentsTextBoxが表示され、検証が有効になります。

したがって、[保存]ボタンをクリックするときは、ユーザーがCommentsTextBoxにコメントを入力したことを確認する必要があります。ユーザーが[アドレスの変更]テキストボックスなしで[保存]ボタンをクリックすると、レコードが保存されます。

実行時に、エディターIDがAddressesRecords_0_Address、AddressesRecords_1_Addressのように動的に生成されることがわかります。

いくつかのJqueryを試してみましたが、実際のAddressTextBox IDが動的に生成されるため、これは機能しないようです。

<script type="text/javascript">


    $(document).ready(function(){

       var $el = $('#AddressesRecords_0_Address');
       $el.data('oldVal',  $el.val() );


       $el.change(function(){

            $("#AddressesRecords_0_Comments").show();
       })

    });
</script>

ここで、各addressTextBoxに対してJquery変更関数をアタッチするにはどうすればよいですか?

4

1 に答える 1

0

TextBox1、TextBox2、TextBox3という名前の3つの異なるテキストボックスがあるとすると、このコードはこれらのフィールドの変更をチェックし、コメントフィールドを表示します

$('#TextBox1, #TextBox2, #TextBox3').each(function () {
    $(this).data('oldVal', $(this).val());
    $(this).bind("propertychange keyup input paste", function (event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $(this).data('oldVal', $(this).val());

            $('#Comments').show();
        }
    });
});

各フィールドにクラスを割り当てて、次のようにすることもできます。

$('.MyClass').each(function () {
    $(this).data('oldVal', $(this).val());
    $(this).bind("propertychange keyup input paste", function (event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $(this).data('oldVal', $(this).val());

            $('#Comments').show();
        }
    });
});
于 2012-05-15T01:28:08.707 に答える