2015-02-11 116 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()); 
});