簡體   English   中英

HTML表單未使用JavaScript提交

[英]HTML form does not submit in JavaScript

試圖創建一個簡單的年齡計算器。 當前將填充當前年份,但是當您輸入出生年份並單擊提交時, 不會發生任何事情。

 function aaa(){ date=new Date(); var y=date.getFullYear(); document.getElementById('ddd').value=y; } function display(){ var c=document.getElementById('eee').getFullYear.value; //var aa= document.getElementById('eee').(this).('getDate').value; var e= y - c; { document.write("Ans="+e); } alret(e); } 
 <body onload="aaa();"> <form name="xyz" method="post"> CurrentDate:<input type="text" name="ddd" id="ddd"> BirthDate:<input type="date" name="eee" id="eee"> Age:<input type="text" name="age" id="age"> <input type="submit" name="submit" value="submit" onClick="display();"> </form> </body> 

對於代碼審查來說可能更好,但是這里是:

<script language="javascript">

腳本元素的語言屬性在HTML 4中已棄用,在HTML5中已刪除。 去掉它。

function aaa()

函數應具有有意義的名稱,例如setYear

{
    date=new Date();

您應該使用var來保持局部變量。

    var y=date.getFullYear();

    document.getElementById('ddd').value=y;

您可以這樣做:

  document.getElementById('ddd').value = new Date().getFullYear();

}
function display()
{
    var c=document.getElementById('eee').getFullYear.value;

並非所有瀏覽器都支持輸入類型日期,並且該日期也不起作用。 如果您只是使用年份差異(到大約一半時間的一年,這將是不正確的),那為什么不只問年份呢?

    var e= y - c;
    {
      document.write("Ans="+e);
    }

該塊是多余的,在load事件之后調用document.write將首先清除整個文檔(所有內容,包括所有腳本),並僅將傳遞給document.write的內容加載到新文檔中

[...]

因此,重寫可能看起來像:

 function calcAge(element) { var form = element.form; form.age.value = form.currentYear.value - form.birthYear.value; } window.onload = function() { document.forms[0].currentYear.value = new Date().getFullYear(); } 
 <form> Current year: <input name="currentYear"><br> Birth year: <input name="birthYear"><br> <input type="button" onclick="calcAge(this)" value="Caluclate age"><br> Your age: <input name="age" readonly><br> </form> 

請注意,在表單中的每個控件有引用它在窗體的窗體屬性。另外,同一個名字表單控件可作為形式的命名屬性(因此命名控制提交覆蓋提交方法)。

  • document.getElementById('eee')是DOM元素。
  • 從您的代碼來看, document.getElementById('eee').getFullYearundefined
  • document.getElementById('eee').getFullYear.value應該引發錯誤。

您試圖從(不幸) undefined的對象讀取屬性,這就是為什么您的代碼無法正常工作的原因。 打開控制台,查看是否有一條紅線顯示如下內容:

無法讀取未定義的屬性“值”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM