2015-02-11 127 views
0

我在页面上有多个<input class="form-control inputDate" type="text" value="12/31/1899 7:00 PM">。我也有以下javascript,无法从<input>获得价值

var inputs = jQuery('.inputDate'); 
for (var i = 0; i < inputs.length; i++) { 
    console.log("test"); 
    jQuery(inputs[i]).val().split('/')[2]; 
    var input = jQuery(inputs[i]).val().split('/')[2]; 
    console.log("TEST" + input); 
    if (input.length > 4) { 
    input = input.split(" ")[0]; 
    } 
    if (input < '2015') { 
    jQuery(inputs[i]).val(""); 
    } 
} 

问题是var input没有值。我试图打开控制台和测试(对上面的html),没有什么值得的。

我都试过了,

jQuery(inputs[i]).val(); 
jQuery(inputs[0]).val(); 
document.getElementsByClassName("inputDate")[0].value; 

但没有返回值。我认为问题的一部分是,该值设置在后端至1899年,而不是从null开始。

我该如何获得价值?

编辑-------------------------------------

我已经做了更多测试和当我做

var test = inputs[0]; 
jQuery(test).val("123") 

HTML标记仍然显示日期。但如果我这样做(来自IntheWeeds)

jQuery(".inputDate").each(function() { 
    console.log($(this).val()); 
}); 

它返回123和“”,即使HTML标记中的值仍然是日期。

+0

,为什么不走一路和使用'each'方法循环的投入? – ndugger 2015-02-11 15:42:57

+0

有趣的提示:jsFiddle似乎不能正确支持文本输入的默认值。 – Skerkles 2015-02-11 15:43:49

+0

尝试:$ .each($(“。inputDate”),function(){ console.log($(this).val()); }); – 2015-02-11 15:45:12

回答

2

您没有访问属性的值存在。尝试

var test = inputs[i]; 
jQuery(test).val(); 

或使用。每个方法:

var inputs = jQuery('.inputDate'); 
jQuery(inputs).each( 
    jQuery(this).val().split('/')[2]; 
    // rest of the code don't forget to get rid of ending '}' 
+0

我跑这个代码,它不起作用。刚刚返回了空字符串。 – 2015-02-11 15:45:38

+0

尝试替代 – 2015-02-11 15:47:14

+0

试过了,它不起作用。我做了更多测试并更新了OP,以解释我现在看到的情况。谢谢! – 2015-02-11 16:03:37

0

试试这个:

var inputs = $('.inputDate').val(); 

// Expect: input = "12/31/1899 7:00 PM" 
+0

可悲的是这不起作用。它仍然返回空字符串。 – 2015-02-11 15:41:19

+0

您是否有多个元素应用了inputdate类? – 2015-02-11 15:54:10

+0

是的,在我正在处理的具体页面上,我有两个。 – 2015-02-11 16:02:16

1

我肯定会推荐使用“每个”,作为菜鸟的他更新的答案描述。这里是展示如何登录每个文本框的值一个简单的例子:如果你正在使用jQuery

$(".inputDate").each(function() { 
    console.log($(this).val()); 
});