2011-12-07 83 views
1

我已經得到了驗證與我的代碼爲XHTML 1.0 Strict標準的問題。如何解決表單操作問題XHTML 1.0嚴格

我一直在使用w.3 validator嘗試和驗證我的網頁。 它告訴我

112行,列24:所需的屬性 「行動」 未指定

 <form id="orderform"> 

需要,爲您所使用的元素上面給出的屬性, 但你已經省略了它。例如,在大多數HTML和XHTML文檔 類型中,「script」元素需要「type」屬性,而「img」元素需要屬性 「alt」。對於類型

典型值是類型=「文本/ CSS」爲和 類型=「文本/ JavaScript的」腳本。

我對XHMTL和CSS比較新,我也在學習Javascript,我做了Google搜索,並且發現很多人在討論使用Javascript行來修復錯誤,但沒有一個足夠清楚。這裏有人能爲我提供一個清晰的解釋嗎?

這是我的XHTML代碼..

<form id="orderform"> 
<div class="field"> 
    Name: 
    <input type="text" id="name" name="name" value="" /> 
</div> 
<div class="field"> 
    # of Home shirts: 
    <input type="text" id="homeshirt" name="home" value="" onchange="updateOrder();" /> 
</div> 
<div class="field"> 
    # of Away shirts: 
    <input type="text" id="awayshirt" name="away" value="" onchange="updateOrder();" /> 
</div> 
<div class="field"> 
    Date of collection: 
    <input type="text" id="date" name="date" value="" /> 
</div> 
<div class="field"> 
    Subtotal: 
    <input type="text" id="subtotal" name="subtotal" value="" readonly="readonly" /> 
</div> 
<div class="field"> 
    Tax: 
    <input type="text" id="tax" name="tax" value="" readonly="readonly" /> 
</div> 
<div class="field"> 
    Total: 
    <input type="text" id="total" name="total" value="" readonly="readonly" /> 
</div> 
<div id="button"> 
    <input type="button" class="button" value="Place Order" onclick="placeOrder(this.form);" /> 
</div> 
</form> 

和我的JavaScript ...

<script type="text/javascript"> 
     function updateOrder() { 
      const TAXRATE = 0.0925; 
      const SHIRTPRICE = 39.99; 
      var numHomeShirt = parseInt(document.getElementById("homeshirt").value); 
      var numAwayShirt = parseInt(document.getElementById("awayshirt").value); 
      if (isNaN(numHomeShirt)) 
       numHomeShirt = 0; 
      if (isNaN(numAwayShirt)) 
       numAwayShirt = 0; 
      var subTotal = (numHomeShirt + numAwayShirt) * SHIRTPRICE; 
      var tax = subTotal * TAXRATE; 
      var total = subTotal + tax; 
      document.getElementById("subtotal").value = "£" + subTotal.toFixed(2); 
      document.getElementById("tax").value = "£" + tax.toFixed(2); 
      document.getElementById("total").value = "£" + total.toFixed(2); 
     } 

     function placeOrder(form) { 
      if (document.getElementById("name").value == "") 
       alert("I'm sorry but you need to provide a name to print on the shirt."); 

      else if (document.getElementById("date").value == "") 
       alert ("I'm sorry but you must provide a date you can collect your shirt(s)."); 

     } 
    </script> 

謝謝您的時間,

乾杯。 Jamie

+1

剛剛添加空作用怎麼樣? '

' –

+1

是的。添加一個'action =「」'就可以做到。另外,一個小筆記。當運行此驗證程序時,「程序」不會在您的位置執行任何Javascript,因此,此解決方案無法正常工作。 – OptimusCrime

+0

謝謝大家,空行爲現在允許我的頁面進行驗證,非常感謝。 –

回答

1

也許這太明顯了,我錯過了一些東西,但爲什麼不只是將action屬性添加到窗體?

1

不需要JavaScript。如果您使用的是php,只需添加以下代碼:

<form id="your_id" action="<?=$_SERVER['PHP_SELF']?>"> 

基本上,這段代碼會將操作設置爲同一頁。

或者其他建議,只需添加一個空的動作:)

1

要解決,你需要在表單元素的action屬性特定的驗證錯誤。

<form id="orderform" action=""> 

它看起來像你使用JavaScript來處理表單提交,那麼你應該能夠離開的動作空,否則給它涉及到表單提交的PHP腳本的值。

1

XHTML要求您的表單包含一個在按下提交按鈕時將被調用的操作(即服務器上的另一個腳本)。

目前,你只在Javascript中實現行爲 - 如果禁用了這種行爲,則不會發生任何事情。理想情況下,你應該指向一個腳本,通常是相同的PHP腳本作爲一個生成的形式,來處理提交按鈕按下:

<form id="your_id" action="<?=$_SERVER['PHP_SELF']?>"> 

然後你的腳本應該處理中表明,JavaScript沒有的情況下提交。

相關問題