我有一个隐藏输入的表单。
我.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;
});
答案 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);