22

我知道如何遍历下面的输入,搜索具有特定“测试人员”类别的输入

我是这样做的:

<input type='text' name='firstname' class="testing" value='John'>
<input type='text' name='lastname' class="testing" value='Smith'>

<script type="text/javascript">
$(document).ready(function(){

 $.each($('.testing'), function() { 
   console.log($(this).val());
 });

});
</script>

它按预期输出“John”、“Smith”。

我不想使用class="testing"并使用自定义属性:testdata="John".

所以这就是我要做的:

<input type='text' name='firstname' testdata='John'>
<input type='text' name='lastname' testdata='Smith'>

我的目标是使用 inside 自动填充每个输入的值testdata,但只有那些检测到具有该testdata属性的值。

$.each这是我使用循环失败的尝试:

$.each($('input').attr('testdata'), function() {
  var testdata = $(this).attr('testdata');
  $(this).val(testdata);    
});

我得到这个回复:Uncaught TypeError: Cannot read property 'length' of undefined 谁能看到我做错了什么?

4

4 回答 4

41

这里它使用 HTML5data-*属性:

HTML:

<input type='text' name='firstname' data-test='John'>
<input type='text' name='lastname' data-test='Smith'>

JS:

$("input[data-test]").each(function(){
    var testdata = $(this).data('test');
    $(this).val(testdata);
});

它在这里工作:http: //jsfiddle.net/SFVYw/

一个更短的方法是使用这个 JS:

$("input[data-test]").val(function(){
    return $(this).data('test');
});

在内部,它与其他 JS 代码相同,但更简洁一些。

于 2013-04-18T14:55:29.923 回答
7
$("input[testdata]").each(function(){
  alert($(this).attr('testdata'));
 // do your stuff
});

工作演示

于 2013-04-18T14:50:46.653 回答
3

如果您想选择具有特定属性名称的输入并且您有这些 html 输入:

<input type='text' name='user1' fieldname="user" class="testing" value='John1'>
<input type='text' name='user2' fieldname="user" class="testing" value='Smith1'>
<input type='text' name='admin1' fieldname="admin" class="testing" value='John2'>
<input type='text' name='admin2' fieldname="admin" class="testing" value='Smith2'>

您只能像这样循环管理员:

$("input[fieldname='admin']").each(function(){
    alert($(this).val());
});

同样,您可以只为用户循环:

$("input[fieldname='user']").each(function(){
    alert($(this).val());
});
于 2016-01-31T15:27:25.473 回答
2

为了遍历所有具有testdata属性的元素并为其属性分配表单字段,请尝试

$("[testdata]").each(function(){
    $(this).val($(this).attr('testdata'))
})

[适用于我猜的所有元素]

于 2017-11-14T12:08:55.333 回答