0

我有一些输入,我想用从文本中获得的值填充它们。这是我的代码:

$( "#dialog-test fieldset" ).hide();
$( "#dialog-test fieldset:eq("+j+")" ).show();
$(this).children(".testValue").each(function(k,item) {
    $( "#dialog-test fielset:visible input").eq(k).val($(this).text());
});
$( "#dialog-test" ).dialog( "open" );

这不起作用,因为 #dialog-test 被隐藏,因此 :visible 不返回任何内容。这有效,但只有在我完成更改所有值后我才能打开我的对话框:

$( "#dialog-test fieldset" ).hide();
$( "#dialog-test fieldset:eq("+j+")" ).show();
$( ".ui-dialog:eq(2) .ui-button-text:first" ).text("Modifier le test");
$( "#dialog-test" ).dialog( "open" );
$(this).children(".testValue").each(function(k,item) {
    $( "#dialog-test fieldset:visible input").eq(k).val($(this).text());
});

我会使用第一个解决方案,但无法设法找到流程以便 :visible 工作。

非常感谢你的帮助,蒂姆

4

3 回答 3

2

这里:

var $inputs = $( 'fieldset', '#dialog-test' ).hide().eq( j ).show().find( 'input' );

$( this ).children( '.testValue' ).each(function ( i, val ) {
    $inputs.eq( i ).val( $( this ).text() );
});
于 2012-08-07T12:59:38.027 回答
0

您可以尝试使用 eq 过滤器通过索引来选择相应的输入:

$(this).children(".testValue").each(function(k,item) {
    alert($(this).text());
    $( "#dialog-test input:visible").eq(k).val($(this).text());
});

问候

艾蒂安

于 2012-08-07T13:01:58.050 回答
0

试试这个。

var visible_inputs = $('#dialog-test input:visible');
var i =0;
$(this).children('.testValue').each(function(){
    $((visible_inputs)[i++]).val($(this).text());
});
于 2012-08-07T13:08:55.160 回答