Javascript 使用jQuery查找输入字段

Javascript 使用jQuery查找输入字段,javascript,jquery,Javascript,Jquery,我一直试图找到三个输入(type=text),它们是使用jQuery动态添加的。我试图使用.closest(),.parents(),.find(),和.children(),但失败了 我还尝试了document.getElementsByName,但如果我创建了多组输入(如前所述,可以动态添加),它不会返回正确的值 我的代码如下: function update(username, row) { affiliation_val = $(document.getElementsByNam

我一直试图找到三个输入(type=text),它们是使用jQuery动态添加的。我试图使用
.closest()
.parents()
.find()
,和
.children()
,但失败了

我还尝试了document.getElementsByName,但如果我创建了多组输入(如前所述,可以动态添加),它不会返回正确的值

我的代码如下:

function update(username, row) {
    affiliation_val = $(document.getElementsByName('affiliation')).val(),
    comments_val = $(document.getElementsByName('comments')).val(),
    role_val = $(document.getElementsByName('role')).val();
//the search above does not work when I add multiple inputs… it returns only the first three inputs 
    console.log( $(row).closest(“input”) ); //one of my attempts... I also did using a combination of parents("tbody") and  children("input"), for example... and many others  
}


function format(d) {
        var message1 = '<table cellpadding="8" cellspacing="0" border="0" style="padding-left:50px;">'+
        '<tr>'+
            '<td class="text-right"><b>User ID:</b></td>'+
            '<td class="text-left"> &nbsp; '+username+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td class="text-right"><b>Password last set:</b></td>'+
            '<td class="text-left"> &nbsp; '+d.pwd_last_set+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td class="text-right"><b>Uid number:</b></td>'+
            '<td class="text-left"> &nbsp; '+d.uid+'</td>'+
        '</tr>'+
        '<tr>'+
            '<td class="text-right"><b>Email:</b></td>'+
            '<td class="text-left"> &nbsp; '+d.email+'</td>'+
        '</tr>'+
        split_projects(d.projects_name, d.projects_role),
        message2 = '<tr>'+
            '<td class="text-right"><b>Affiliation:</b></td>'+
            '<td class="text-left"><input type="text" name="affiliation" value="'+d.affiliation+'" '+readonly+' /></td>'+
        '</tr>'+
        '<tr>'+
            '<td class="text-right"><b>Comments:</b></td>'+
            '<td class="text-left"> <input type="text" name="comments" value="'+d.comment+'" '+readonly+' /></td>'+
        '</tr>'+
        '<tr>'+
            '<td class="text-right"><b>Role:</b></td>'+
            '<td class="text-left"><input type="text" name="role" value="'+d.role+'" '+readonly+' /></td>'+
        '</tr>',
        message3 = show_inconsistency(inconsistent)+
        show_miss_uid(miss_uid)+
        '<tr>'+
            '<td>&nbsp; </td>' +
        '<td>'+
              '<button type="button" class="btn btn-default" onclick="sendMail(\'' +username+ '\'); return false">' +
                '<span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Request change of permission' +
              '</button> <br/><br/> ' +
            '</td>' +
        '</tr>' +
    '</table>',

        button = '<tr><td>&nbsp;</td><td><button class="btn btn-default" onclick="update(\''+username+'\', this)">Update</button</td></tr>';

    return message1+message2+button+message3;
}
函数更新(用户名,行){
附属关系\u val=$(document.getElementsByName('affiliation')).val(),
comments_val=$(document.getElementsByName('comments')).val(),
role_val=$(document.getElementsByName('role')).val();
//当我添加多个输入时,上面的搜索不起作用……它只返回前三个输入
console.log($(row.nestest(“input”);//我的一次尝试……我还使用了父母(“tbody”)和孩子(“input”)的组合,例如……以及其他许多方法
}
函数格式(d){
var message1=''+
''+
'用户ID:'+
''+用户名+''+
''+
''+
'最后设置的密码:'+
''+d.pwd_最后一组+''+
''+
''+
'Uid号码:'+
“+d.uid+”+
''+
''+
'电子邮件:'+
“+d.电子邮件+”+
''+
拆分项目(d项目名称、d项目角色),
信息2=''+
“隶属关系:”+
''+
''+
''+
“评论:”+
' '+
''+
''+
'角色:'+
''+
'',
message3=显示不一致(不一致)+
显示未命中uid(未命中uid)+
''+
'  ' +
''+
'' +
“请求更改权限”+
“

”+ '' + '' + '', 按钮='Update使用
jQuery(“[attribute='value']”)
选择器

affiliation_val = $( "input[name='affiliation']" ).val();
comments_val = $( "input[name='comments']" ).val();
role_val = $( "input[name='role']" ).val();
使用
jQuery(“[attribute='value']”)选择器

affiliation_val = $( "input[name='affiliation']" ).val();
comments_val = $( "input[name='comments']" ).val();
role_val = $( "input[name='role']" ).val();

以下内容应作为您的选择器,相应地更改“角色”:

$( '#tableId input[name="role"]' ).val();

根据更多详细信息进行编辑(请参见下面的注释)

以下内容应作为您的选择器,相应地更改“角色”:

$( '#tableId input[name="role"]' ).val();

根据更多细节进行编辑(参见下面的注释)

正如@DBS所建议的,使用
.each()

这将遍历当前页面上名为“role”的每个元素,并将它们的值打印到控制台

如果您只需要查找元素(如您在问题中所建议的那样,对它们执行其他操作),那么您可以在
.each()
循环中使用
element

还有一个想法。如果您知道这些元素的父元素(因为听起来页面上的每个元素都不止一个),并且对某个特定元素感兴趣,请尝试以下方法:

$('#myParentID[name=“role”]);


这将只选择
角色
#myParentID
中的输入,正如@DBS建议的那样,使用
.each()

这将遍历当前页面上名为“role”的每个元素,并将它们的值打印到控制台

如果您只需要查找元素(如您在问题中所建议的那样,对它们执行其他操作),那么您可以在
.each()
循环中使用
element

还有一个想法。如果您知道这些元素的父元素(因为听起来页面上的每个元素都不止一个),并且对某个特定元素感兴趣,请尝试以下方法:

$('#myParentID[name=“role”]);



这将只选择
角色
#myParentID

中输入的内容,该内容不起作用,因为它查找的是与名称相对应的值谢谢,我的意思是输入名称而不是值与@MikeSprague的注释相同,因为它查找的是与名称相对应的值谢谢,我的意思是输入名称而不是值f值与@MikeSprague的注释相同我对你的语法/结构有点困惑哈哈,你想做的是当你点击某一行的按钮时获取该行的所有输入值吗?我们能看到html结构吗(不是你在js中构建的结构)我更新了代码。我希望它现在会变得清晰。我正在创建一个表并返回它。然后用户更改输入值。一旦用户单击“更新”按钮,我想获得此表中三个输入的值,并在我的后端使用它们。我对您的语法/结构有点困惑哈哈,这就是您要尝试的当你点击某一行的按钮时,你需要获取该行的所有输入值吗?我们能看到html结构吗(不是你在js中构建的结构)我更新了代码。我希望它现在会变得清晰。我正在创建一个表并返回它。然后用户更改输入值。一旦用户单击“更新”按钮,我想获取此表中三个输入的值,并在我的后端使用它们。这会产生与document.getElementsByName相同的问题。它会重新生成urns第一个表的值only@rennomarcus如果这是可行的,但您需要多个feild,只需使用
each()
例如
$('input[name=“role”]”)。each(function(){alert($(this).val())})
啊,好的。您有什么理由不能给输入一个id,可能是输入组的名称和索引(表1有role1,表2有role2,等等)并使用它们作为选择器?是的,我没有使用ID,因为我不知道放在哪里。但你是对的……我可以将用户ID作为表的ID,然后进行搜索。我将尝试这种方法并用我的结果进行更新,这应该是完美的,然后你可以将上面的更改为
$(“#tableId input[name=“role”]”)
etc这导致了与document.getElementsByName相同的问题