4

非表示の入力があるフォームがあります。

それらを .clone() し、.dialog() でユーザーに表示します。

ユーザーはいくつかの変更を行い、.val() を使用して隠しフィールドを変更します。

ただし、次にフォームを複製すると(ページをリロードせずに)、初期値が再び取得され、更新されることはありません。

この奇妙なバグ/結果があるようですか? http://jsfiddle.net/YvBfP/を参照してください (目に見える入力も壊れています)

$(this).closest('td').find('button').click( function ()
{
    var d = $('#pagamento_anticipato').html();

    $(d).dialog({
        modal: true,
        width: 400,
        height: 300,
        close: function( event, ui ) {
                var importo = $(this).find('input[type="text"]').val();
                var descrizione = $(this).find('textarea').val();
                var select = $(this).find('select').val();
                $(this).remove();

                $('#pagamento_anticipato').find('input[id="importo"]').val( importo );
                $('#pagamento_anticipato').find('#descrizione').val( descrizione );
                $('#pagamento_anticipato').find('#tipo').find('option[value="' + select + '"]').attr('selected', true);

            }
    });
    return false;
});
4

2 に答える 2

10

.val()を使用すると、要素の属性ではなく、現在の値が設定/取得されます。

$(element).val(value) // sets current value
$(element).val() // <-- will always return the current value

.attr()を使用する必要がある属性を変更するには

$(element).attr('value',value)

次に、HTML の変更が表示されます。

http://jsfiddle.net/wirey00/bJjjw/

編集:

これがjQuery 1.5.x以下では機能しないことがわかりました.. jQuery 1.6.0+でテストしたところ、正常に機能しました

于 2012-12-28T14:51:45.027 に答える
3

入力の値プロパティを設定していますが、値属性が変更されたかどうかを確認しています。要素の値を.val()確認するには、html をチェックしないでください。ただし、要素の値属性を変更する必要がある場合は、使用しますsetAttribute

$('#money')[0].setAttribute('value', 3000);

http://jsfiddle.net/YvBfP/4/

于 2012-12-28T14:54:27.753 に答える