如何在jQuery mobile中循环元素?

时间:2013-03-15 08:08:20

标签: jquery jquery-mobile

我有3个字段:

<input type="datetime" name="input-data" id="datetime-start">
<input type="datetime" name="input-data" id="datetime-end">
<input type="text" name="input-data" id="text-basic">

我需要检查是否有输入的内容,所以我首先像jQuery.each('[name="input-data"]', function()那样在循环中使用this,但是会出现一些错误。在小调试之后,我找到了类似jQuery.each(jQuery('[name="input-data"]'), function(key, value)的方式,但是当我尝试console.log(value.val());时,我得到了错误。所以我决定查看value中的内容并感到惊讶 - 只有一个字符串<input type="datetime" name="input-data" id="datetime-start">。那么我如何循环所有输入值呢?

5 个答案:

答案 0 :(得分:2)

您在jQuery实例上使用each,例如:

jQuery('[name="input-data"]').each(function() {
    // Here, `this` is the DOM element. If you want to use jQuery methods,
    // wrap the element in a jQuery instance:
    var input = jQuery(this);

    // Now, input.val() will give you the value
});

jQuery的API有时候有点令人困惑。这是其中一次。 jQuery有两个相似但不同的函数:你调用jQuery实例的each(见上文)和jQuery.each,你可以用它来遍历数组,对象和类似数组的对象。

使用jQuery.each(jQuery('[name="input-data"]', function...的代码确实有效,因为jQuery实例类似于数组,但是在函数内你没有包装DOM元素,这就是为什么val()不起作用的原因。但上面是循环一组匹配元素的正常方法。

答案 1 :(得分:0)

尝试

$('input[name="input-data"]').each(function(el){
    console.log($(this).val());
})

演示:Fiddle

答案 2 :(得分:0)

$(document).ready(function(){
   $('input').each(function(){
     console.log($(this).val());
    });
    }
});

答案 3 :(得分:0)

您错误地使用了.each()。试试这个:

jQuery('[name="input-data"]').each(function() {
    // Use $(this) to access current object
});

答案 4 :(得分:-1)

你正在研究HTML5,不是吗?为什么不使用给定的html5验证? 只需设置属性&#34; required =&#39; true&#39;&#34;你应该完成; - )

在jquery mobile中也有一个很好的方法。如果我没记错的话,你必须设置班级“必要的”。到想要的输入属性。供参考:

http://www.raymondcamden.com/index.cfm/2012/7/30/Example-of-form-validation-in-a-jQuery-Mobile-Application