Javascript 使用jQuery查找输入字段
我一直试图找到三个输入(type=text),它们是使用jQuery动态添加的。我试图使用Javascript 使用jQuery查找输入字段,javascript,jquery,Javascript,Jquery,我一直试图找到三个输入(type=text),它们是使用jQuery动态添加的。我试图使用.closest(),.parents(),.find(),和.children(),但失败了 我还尝试了document.getElementsByName,但如果我创建了多组输入(如前所述,可以动态添加),它不会返回正确的值 我的代码如下: function update(username, row) { affiliation_val = $(document.getElementsByNam
.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"> '+username+'</td>'+
'</tr>'+
'<tr>'+
'<td class="text-right"><b>Password last set:</b></td>'+
'<td class="text-left"> '+d.pwd_last_set+'</td>'+
'</tr>'+
'<tr>'+
'<td class="text-right"><b>Uid number:</b></td>'+
'<td class="text-left"> '+d.uid+'</td>'+
'</tr>'+
'<tr>'+
'<td class="text-right"><b>Email:</b></td>'+
'<td class="text-left"> '+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> </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> </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相同的问题