jquery clone输入没有看到值的更改

时间:2012-12-28 14:44:11

标签: javascript jquery jquery-ui

我有一个隐藏输入的表单。

我.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;
});

2 个答案:

答案 0 :(得分:10)

使用.val() sets /获取当前值,而不是元素的属性。

$(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+测试它并且它运行良好

答案 1 :(得分:3)

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

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

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