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

您正在设置输入的 value 属性,但检查 value 属性是否已更改。要查看元素值.val(),请不要检查其 html。但是,如果您需要更改元素值属性,请使用setAttribute

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

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

于 2012-12-28T14:54:27.753 回答