2010-09-03 149 views
2

我有一個按鈕,它現在被設置爲類型「提交」。這將調用控制器,執行一些代碼並返回到視圖。當我使用jquery隱藏按鈕時,我發現當我單擊按鈕時,隱藏了按鈕,但只要返回視圖,按鈕不會再隱藏。然而,對於類型「按鈕」,當我點擊按鈕時,這隱藏了按鈕,但不執行控制器中的代碼。有沒有辦法隱藏類型「提交」按鈕,所以當視圖返回時,按鈕仍然隱藏?類型提交和類型按鈕

$('#btnAdd').click(function() { 
      $('#btnAdd').hide(); 
     }); 
+3

似乎你正在返回一個網頁作爲表單提交的迴應。不要這樣做。使用PRG(http://en.wikipedia.org/wiki/Post/Redirect/Get)避免表單重新提交 – 2010-09-03 03:00:59

回答

2

<input type='submit'>創建一個按鈕,將一個表單提交給服務器並觸發您的服務器代碼。如果您希望在頁面返回時隱藏該按鈕,則需要在頁面中添加邏輯來完成此操作。你如何做到這一點將取決於你的服務器技術(php,.net等)。

<button>行爲不同的原因是<button> s不提交表單(除非您添加更多代碼以使它們做到這一點)...所以上述提到的東西永遠不會發生。這不是一個<button>保持隱藏儘可能多的頁面永遠不會改變/重新加載。如果您將代碼添加到<button>以使其刷新頁面,它也會重新出現。

0

由於按下提交按鈕後頁面將被重新加載,該按鈕將重新出現。一個快速和骯髒的得到你想要的是......

首先,創建一個隱藏字段

<input type="hidden" id="hidden" value="" /> 

然後,當你按下提交,在提交按鈕,這樣做click事件。 。

$('#submit').click(function() { 
    $('#hiddenField').val("1"); 
    $('#form').submit(); 
    return false; 
}); 
在你的控制器

現在,使用的hiddenField的價值一些變量傳遞給它可以這樣使用的視圖...

<?php if($hidden == "1"): ?> 
    <input type="submit" id="submit" value="Submit" /> 
<?php endif; ?> 

只要沒有提交表單的按鈕,它將不會提交表單,直到您自己在按鈕的單擊事件中提交表單。事情是這樣的......

$('button').click(function() { 
    $('#form').submit(); 
}); 

當然,正如我所說,這是實現所需功能的快速和骯髒的方式,有更好的方法 - 使用AJAX,也可以實現根據什麼服務器上更改你使用的語言(我在這裏使用了PHP)。

+0

@ ShiVik - 你可以告訴我C#嗎? – hersh 2010-09-03 12:55:06

2

顯示按鈕是因爲該頁面在提交表單後新顯示。你的「舊」頁面,點擊並隱藏按鈕是歷史記錄。

你想要什麼?
按下一個按鈕,做服務器端的東西,不改變當前的頁
使用類型按鍵的按鍵,使用了Ajax調用服務器端。 或者使用類型爲submit的按鈕,並在服務器端執行Pablo所說的http://en.wikipedia.org/wiki/Post/Redirect/Get

按下一個按鈕,做服務器端的東西,給用戶反饋: 使用<form method="post"來標記你的表格。使用提交按鈕來調用服務器端。在服務器上隱藏提交按鈕,如果它被方法post調用(調用帶鏈接的頁面或將其輸入到地址字段中,則使用method = get調用它)。

類型提交和類型按鈕有什麼區別? 一個提交按鈕沒有javascript的作品發送一些輸入到服務器端。周圍的表單被髮送到服務器,並在瀏覽器中呈現響應。 一個按鈕按鈕需要一個javascript onclick處理函數,一個javascript函數。當用戶按下按鈕時,會調用onclick處理程序。

0

當您的表單被提交併且您的控制器處理數據時,如果符合某些條件,您可以在服務器端代碼中設置臨時會話變量或cookie。所以,基本上頁面會在每次頁面加載時檢查這個變量。例如,在PHP:

if(empty($_SESSION['temp']['hideSubmitButton'])) { 
    $submitButton = '<button type="submit">Normal Button</button>'; 
} else { 
    $submitButton = '<button type="submit" disabled="disabled">Disabled Button</button>'; 
    // or $submitButton = ''; 
} 

但你必須決定何時取消設置()的$ _SESSION [ '臨時']或$ _COOKIE [ '臨時']變量。