2012-01-17 38 views
0
<?php 
$sort=$_REQUEST['sortby']; 
echo" $sort "; 
?> 
<html> 
<head> 
</head> 
    <body> 
<form method="get" id="thisForm" > 
      <table border=1> 
     <tr> 
      <td> 
       <a href="" name="say" onclick="javascript: sorting(0)">Day </a> 
      </td> 
      <td> 
       <a href="" name="server" onclick="javascript: sorting(1)">Server </a> 
      </td> 
      <td> 
       <a href="" name="service" onclick="javascript: sorting(2)">Service </a> 
      </td> 
      <td> 
       <a href="" name="count" onclick="javascript: sorting(3)">Count </a> 
      </td> 
     </tr> 
    </table>  
     <input type="hidden" name="sortby" id="sortby"/> 
    </form> 
    </body> 

如果使用「a href」提交頁面,隱藏字段不會發布?

<script type="text/javascript" > 

var sortArray=new Array("say","server","service","count"); 
function sorting(cnt) 
{ 
    alert(sortArray[cnt]); 
    document.getElementById("sortby").value=sortArray[cnt]; 
} 

根據標題點擊我試圖建立一種查詢,但它是在點擊「A HREF」鏈接提交後,我無法得到隱藏字段發佈數據?

我已經改變了「a href」來提交按鈕,那麼如果我們點擊相同的「排序方式」鏈接,如何停止提交的頁面。

+2

你有問題嗎? – MrGlass 2012-01-17 06:10:16

+0

一個不發表任何形式.....使用輸入按鈕 – 2012-01-17 06:11:12

+0

也許添加'document.getElementById(「thisForm」)。submit'給js代碼? – k102 2012-01-17 06:11:22

回答

1

在這裏,我們缺少的是什麼提交表單:

  • 的鏈接並不用輸入數據提交表單,它只是改變的URL。
  • 提交表單。
  • 覆蓋默認的<a>行爲(例如,使用return false)。

sorting的更新版本:

var sortArray=new Array("say","server","service","count"); 
function sorting(cnt) 
{ 
    document.getElementById("sortby").value = sortArray[cnt]; 
    document.getElementById("thisForm").submit(); 
    return false; 
} 

可以使用稱之爲:

<a href="" name="say" onclick="return sorting(0);">Day </a> 

工作例如:http://jsbin.com/ukoton/3

另一種選擇是使用通俗圖書館jQuery的,這可以大大簡化您的代碼:

$(function(){ 
    $('#thisForm a').click(function(ev){ 
    var sortValue = this.name; 
    // an alternative to this.name is to use a data-sortBy='day' attribute, 
    // and then $(this).data('sortBy') 
    $('#sortby').val(sortValue); 
    $('#thisForm').submit(); 
    ev.preventDefault(); 
    }); 
}); 

工作例如:http://jsbin.com/ukoton/4

+0

提交表單後不需要返回false,就像你應該已經離開了該頁面。 – MrGlass 2012-01-17 06:17:08

+2

@MrGlass - 鏈接可以覆蓋提交 - 它爲我做的... – Kobi 2012-01-17 06:22:26

+0

只是不要使用鏈接發佈表單。這就是提交按鈕的用途。如果你想要的話,你可以將它設計成看起來像鏈接的樣子,但是使用實際的鏈接會使表單無法用於沒有javascript的人。這可能包括使用輔助工具的人員。 – GolezTrol 2012-08-02 10:11:33

0

嗯..我不是一個PHP的傢伙..所以我想,最初的4行試圖從表單中sortby領域,反正href鏈接是不等效的HTML表單提交,你需要明確提交表單,也許使用javascript,以獲得值

1

默認情況下,定位標記(即A)不提交表單。您可以使用按鈕或使用JavaScript提交表單。

您可以從JavaScript和document.thisForm.submit()

+2

在一些瀏覽器中,如果表單有NAME =「thisForm」,所以document.getElementById('thisForm')。submit()'可能是更好的選擇 – mplungjan 2012-01-17 06:20:19

0

只需使用一個提交按鈕和風格它看起來像一個鏈接,如果您需要。在這裏不需要使用JavaScript。

使用實際的鏈接而不是提交按鈕將使表單不能用於沒有JavaScript的人。這可能包括使用輔助工具的人員。除此之外,它使您的頁面更加複雜(添加不合邏輯的HTML,並需要Javascript),因此更復雜。

+0

MrGlass在7個月前已經建議:http://stackoverflow.com/a/8890439/7586。至於「不合邏輯的HTML」,問題是一團糟,但我們用我們所得到的。 – Kobi 2012-08-02 10:35:28