2011-08-26 56 views
12

我有我在我的CMS使用我想添加額外的開放,以節省按鍵形式的一種形式:「按Ctrl + S」CTRL + S提交表單和所有輸入

這適用於從提交按鈕除了所有的輸入不被髮送,這個簡單的例子說明我的意思:

<?php 
if(isset($_POST['save'])){ 
    die('save= ' . $_POST['save']); 
} 
?> 
<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8" /> 

    <title></title> 

    <style type="text/css"> 
     html { height: 100%; } 
     body { 
      color: #262626; 
      background: #f4f4f4; 
      font: normal 12px/18px Verdana, sans-serif; 
      height: 100%; 
     } 
     #container { 
      width: 760px; 
      margin: 0 auto; 
      padding: 10px 60px; 
      border: solid 1px #cbcbcb; 
      background: #fafafa; 
      -moz-box-shadow: 0px 0px 10px #cbcbcb; 
      -webkit-box-shadow: 0px 0px 10px #cbcbcb; 

      min-height: 100%; 
      height: auto !important; 
      height: 100%; 
     } 

    </style> 

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script type="text/javascript"> 
    (function($){ 
     $(document).ready(function(){ 

      // Save Form 
      $(window).keypress(function(event) { 
       if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true; 
       $("#container form").submit(); 
       event.preventDefault(); 
       return false; 
      }); 

     }); 
    })(jQuery); 
    </script> 
</head> 

<body> 
    <div id="container"> 

     <form action="" method="post"> 
      <label for="">Name</label> 
      <input type="text=" name="name" value="" /> 

      <input name="save" type="submit" value="Save" /> 
      <input name="create" type="submit" value="Create" /> 

     </form> 

    </div> 
</body> 
</html> 
+0

在CMS中,它使用這個來確定它是否是「保存」,「創建」,「刪除」等,所以是需要提交提交按鈕。 –

+0

我曾嘗試提交提交按鈕,但沒有起作用 –

+0

@ Mr.Disappointment:如果提交按鈕是點擊的提交按鈕,則該提交按鈕的值僅包含在請求中。 – Matt

回答

8

如果按鈕被點擊,submit按鈕的值僅包含在請求中。

因爲您直接提交表單(使用JS),所以您沒有單擊提交按鈕,因此沒有提交。

而不是在窗體上調用.submit(),請嘗試調用.click()上您想要包括的提交按鈕。

$(window).keypress(function(event) { 
    if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true; 
    $("#container form input[name=save]").click(); 
    event.preventDefault(); 
    return false; 
}); 
+0

我沒有嘗試過,但提交不是點擊。謝謝 –

2

嘗試:

if($("#container form :submit:first").length) 
{ 
    $("#container form :submit:first").click(); 
} 
else 
{ 
    $("#container form").submit(); 
} 

這將觸發第一個提交按鈕點擊(如果可用)

1

表單沒有設置動作值,並且有多個提交輸入。

多次提交可能 break .submit()但我不這麼認爲 - 我認爲沒有一個動作發送表單爲什麼它似乎什麼都沒做。

編輯/更正:

我因爲發佈這個答案(感謝@JohnMagnolia)學到的一些東西,所以請允許我糾正自己:

實際上空的動作屬性允許HTML 4 ,但在HTML5中不允許。在大多數情況下,一個空的action屬性將導致表單被提交到當前的URL,,包括 GET參數。多個提交按鈕不是問題,也不是代碼不起作用的原因,請參閱@ Matt的答案以獲取正確的答案。

+0

馬特的答案看起來更好 – jammypeach

+1

對不起,但那是不正確的,如果一個表單有一個空的行動,它會自動回發到自己。 –

+0

@JohnMagnolia這是規範說的,儘管它依賴於瀏覽器(請參閱http://stackoverflow.com/a/1132015/846480)。注意,這個問題的正確答案在上面^^ – jammypeach