我有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">
。那么我如何循环所有输入值呢?
答案 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)
答案 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中也有一个很好的方法。如果我没记错的话,你必须设置班级“必要的”。到想要的输入属性。供参考: