2013-03-07 82 views
0

據我所知,以下是不可能的,如果不是這是jquery的明確限制。一個HTML表單兩個提交按鈕 - 這是jQuery的限制嗎?

我想要一個帶有兩個提交按鈕的html表單。無法提交表單並檢測用於提交的按鈕。

一種方法是使用click(function(),但這樣做可以放棄訪問窗體的任何字段,並且不能引用窗體。實際上,這種方法使用的鏈接看起來是一種形式,但是不是!

在我看來,這似乎是一個基本的需求,這怎麼可能不被支持,表單通常有兩個提交選項......例如「提交」和「編輯」。提交的表單數據的用戶?這怎麼能是不可能的?

感謝

+1

這很可能檢測使用了哪個按鈕... – Passerby 2013-03-07 03:16:28

+0

如果你檢測怎麼這麼表單按鈕提交,而不是一個簡單的點擊? – user2056238 2013-03-07 03:20:37

+0

如果您需要2個提交按鈕,您的UI可能是錯誤的。保存按鈕只需輸入字段數據並將其保存到某個位置,而「編輯」按鈕將打開一個新的可編輯表單,您可以在其中編輯數據並將其保存。 – cen 2013-03-07 03:24:48

回答

0

我不能完全確定你嘗試什麼用兩個提交按鈕做。但是,如果其所需字段中的數據基於按下哪個按鈕,則完全可以使用簡單邏輯來檢測哪個按鈕被單擊,然後使用jQuery通過ID訪問每個表單字段。

$('#btn1').click(function() { $('#field1').doSomething() }); 
$('#btn2').click(function() { $('#field1').doSomething() }); 
1

只是一個例子。

<form action="action.php" method="post"> 
Enter a number: <input type="text" name="number" size="3"> <br> 
<input type="submit" name="add" value="Add 10"> 
<input type="submit" name="subtract" value="Subtract 10"> 
</form> 

<?php 

// check which button was clicked 
// perform calculation 
if ($_POST['add']) 
{ 
    echo $_POST['number'] . " + 10 = " . ($_POST['number']+10); 
} else if ($_POST['subtract']) { 
    echo $_POST['number'] . " - 10 = " . ($_POST['number']-10); 
} 

?> 
0

我做了我的服務器上的一個簡單的測試:

<form method="POST" action="/test/post.php" target="_blank" id="form"> 
    <input type="search" name="q" value="WTF" /> 
    <input type="submit" name="b1" value="Search" /> 
    <input type="submit" name="b2" value="Find" /> 
</form> 
<button type="button" onclick="id('form').submit();">Go</button> 

post.php是一個簡單的print_r($_POST);。結果如下:

  • 出版社Search

    Array 
    (
        [q] => WTF 
        [b1] => Search 
    ) 
    
  • 出版社Find

    Array 
    (
        [q] => WTF 
        [b2] => Find 
    ) 
    
  • [Enter]<input type="search">

    Array 
    (
        [q] => WTF 
        [b1] => Search 
    ) 
    
  • 使用<button>外:

    Array 
    (
        [q] => WTF 
    )