2014-01-25 96 views
1

我有一個形式如下:HTML表單和Javascript問題

Start Date and Time: <input type="text" name="startDate" id="startDate" placeholder="July 21, 1983 13:15:00"><br /> 
End Date and Time: <input type="text" name="endDate" id="endDate" placeholder="July 21, 1983 14:15:00"> 

在我的JavaScript我有:

var startDate = new Date(document.getElementById("startDate").value); 
var endDate = new Date(document.getElementById("endDate").value;); 

,但是這是行不通的。

如何從格式中獲取信息格式爲July 21, 1983 13:15:00格式的變量?

+1

是否要將某人輸入的值格式化爲JavaScript Date對象格式? –

+0

Ilan Biala - 是的正確 – user2110655

回答

4

佔位符屬性並且不能由該元件的屬性作出。您需要使用getAttribute method

var startDate = document.getElementById("startDate").getAttribute("placeholder"); 

這會給你的日期時間值。我使用您的示例代碼創建了a demo in jsFiddle

如果您想在使用JavaScript提交表單時採用該值,我建議您使用jQuery。一個可能的解決辦法是這樣的:

<form action="javascript:alert('test');"> 
    <input type="text" name="startDate" id="startDate" placeholder="July 21, 1983 13:15:00"> 
    <br/> 
    <input type="submit" value="show value" /> 
</form> 

和表單提交處理程序解析輸入值,檢查它是否是一個正確的日期,並顯示年份:

var startDate = document.getElementById("startDate").getAttribute("placeholder"); 
// alert(startDate); 

// handle form request 
$("form").submit(function(event) { 
    // get the entered value 
    var value = $("#startDate").val(); 
    // show entered value or inform user to enter something 
    var message = "Please enter something."; 
    if (value) { 
     // is it a date? 
     var date = Date.parse(value); 
     if (!isNaN(date)) { 
      // yes ... 
      message = "You entered the year " + (new Date(date)).getFullYear(); 
     } 
     else { 
      // no :(
      message = "Please enter a correct date like 2014-01-01"; 
     } 
    } 
    alert(message); 
    // do not submit the form for the test 
    event.preventDefault(); 
}); 

我已經更新了的jsfiddle演示,以便在用戶提交表單時顯示輸入的值。

+0

我不認爲他想佔位符,我想他想要的是用戶輸入的真實值...他可能需要一個事件監聽器。 –

3

也許這個頁面的幫助你

還可以搜索這個詞「javascript日期格式」 爲了獲得更多的結果

1

對於輸入,該值不從佔位符拉。它從值屬性中拉出。

<input type="text" name="startDate" id="startDate" value="July 21, 1983 13:15:00"> 
0

如果您想在輸入值後獲取值,那麼在jQuery中使用.on()方法或使用它的JavaScript對應方法即可。我將使用jQuery,所以如果您決定使用代碼,請不要忘記將其包含在您正在加載的腳本中。

以防萬一你想玩任何代碼,這是我的codepen pen

神奇:

$('input[type="date"]').on('blur', function() { 
    var startingDate = $('#startingDate').val(); 
    var endingDate = $('#endingDate').val(); 
    if (startingDate !== '') { 
     startingDate = new Date(startingDate.replace(/-/g, '/')); 
     $('#startingDateText').text(startingDate); 
    } 
    if (endingDate !== '') { 
     endingDate = new Date(endingDate.replace(/-/g, '/')); 
     $('#endingDateText').text(endingDate); 
    } 
}); 

我使用jQuery的.on('blur', function())用於輸入與type="date",你可能要改變,如果你有比另外兩個設置的監聽器。如果您願意,您可以隨時將偵聽器附加到按鈕上。將日期格式正確設置爲JavaScript Date對象並使其易於使用的一個棘手部分是將-從輸入日期切換到/,因爲否則會出現一些怪癖。

+0

我的答案是否適合你? –