2016-11-26 4 views
0

私はsubmitボタンをクリックするとコンボボックスのいくつかの項目が削除されるphpコードを書いた。今私は確認が欲しいと思っており、私は動作していないコードの下に書きました。 PHPコード:PHPでsubmitをクリックするとJQueryの確認ダイアログ

$DeleteButton=$_REQUEST['DeleteButton']; 
if ($DeleteButton=="delete") : 
    if ($DeleteComboBox=="PickOne") : 
     $DeleteButton = "" ; 
    else : 
     $query = "DELETE FROM `items` WHERE `id` = $DeleteComboBox LIMIT 1"; 
     $result = mysql_query($query) 
      or die("Database deletion failed"); 
     $DeleteButton = "" ; 
    endif ; 
endif ; 

echo "<BR><BR><FORM NAME=\"EditFORM\" ACTION=\"./index.php\" METHOD=POST>\n"; 
$sql_select = "SELECT * FROM items WHERE id>0 order by name" ; 
$sql_result = mysql_query($sql_select) 
or die ("Couldn't execute SQL query on db table.") ; 
echo "<SELECT ID=\"DeleteComboBox\" NAME=\"DeleteComboBox\">"; 
echo "<OPTION VALUE=\"PickOne\" SELECTED>select item</OPTION>"; 
while ($row = mysql_fetch_array($sql_result)) { 
    echo "<OPTION VALUE=\"$row[0]\">" . $row[2] . " " . $row[1] . "</OPTION>"; 
} 
echo "</SELECT>"; 
echo "<BR><BR><INPUT TYPE=SUBMIT NAME=\"DeleteButton\" VALUE=\"delete\" ID=\"DeleteButton\">\n" ; 
echo "</FORM>\n"; 

jQueryの部分:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#dialog").dialog({ 
     autoOpen: false, 
     modal: true 
    }); 
}); 

$("#DeleteButton").click(function(e) { 
    e.preventDefault(); 
    currentForm = $(this).closest('form'); 
    $("#dialog").dialog({ 
     dialogClass: "no-close", 
     buttons : { 
      "yes" : function() { 
      currentForm.submit(); 
      }, 
      "no" : function() { 
      $(this).dialog("close"); 
      } 
     } 
    }); 

    $("#dialog").dialog("open"); 
}); 
</script> 

問題は、このコードが動作していないです。 jqueryパーツを追加しないと、コードは完全に機能しますが、jqueryパーツを追加すると、jqueryダイアログが表示されますが、yesボタンをクリックすると、選択したアイテムを削除せずにフォームが送信されます。

答えて

0

送信ボタンの値は、クリックされたときにのみ送信されますが、このイベントをキャッチしてe.preventDefault()を実行します。その後、currentForm.submit()は、どのボタンがクリックされたか覚えていません。

あなたが動的にフォームに隠し入力を追加することができます。

currentForm.append('<input type="hidden" name="action" value="delete" />'); 
currentForm.submit() 

、代わりに$_REQUEST['DeleteButton']をチェックし、あなたがPHPで、この隠された入力の値をチェックすることができます。

$action = $_REQUEST['action']; 
if ($action == 'delete'): 
    // ... delete the item 
endif; 
+0

あなたはもっと手の込んだしてください可能性があり。ボタンクリックでアイテムを削除したいだけです。これを達成するために、この隠しフィールドを使用するにはどうすればよいですか? – Amir

+0

ありがとうございます。その答えは私を救った^ _ ^ – Amir

関連する問題