仲間のプログラマー。
私は自分の問題へのこの言及を見つけただけで、それは役に立ちませんでした。
$ this->Js->submitに組み込まれたケーキphpで問題が発生しています
私がやりたいこと:
ロジックが開始するサイトには、データを含むテーブルが含まれています。このサイトには、フォームを含み、モーダルウィンドウ(jquery uiダイアログ)によって開かれるいくつかの要素もあります
- データベースにオブジェクトを挿入します。(働く)
- 挿入するフォームは、モーダルダイアログウィンドウにあります。(働く)
- 送信ボタンは画像です。(働く)
- フォームが送信される前に、検証が実行されます(動作中)
- フォームが送信されたら、モーダルを閉じて、テーブルの最初の行に新しいオブジェクトを配置します(作業中)。
それで私の問題は何ですか?
すべてが2回発火します。
**コード**
他のすべてのコードは機能しているように見えるので、コードの$ this-> Js-> submit部分のみを貼り付けるので、問題のように見えることに集中できます。
他のコードが必要な場合は、私に書いてください。編集セクションにもう少し貼り付けさせていただきます。
echo $this->Js->submit(' ', array (
'label' => 'Send',
'onsubmit'=>"event.returnValue = false; return false;",
'div' => array('class' => 'send_button'), //style submit to be an image
'url' => array('controller' => 'records', 'action' => 'append_new_record'),
'type' => 'json',
'success' => '
if (data.success == true) {
$("#element_add").dialog("close");
var newLine = data.recordLine;
$("#content").find("table tbody").find("tr:first").before(newLine);
}
else {
$("#element_add").html(data.form);
}
',
'buffer' => false, //true did not help (refreshes the whole web site)
'before' => '
if (!checkAdd()) { //validation (custom js function)
return false;
}
'
));
私が試したこと
- コードの「success」ブロックの最後にreturnfalse行を追加します。
- コードの「前」ブロックの先頭にevent.preventDefault()を追加します。
EDIT1ここに生成されたHTMLコードがあります
</script><div class="send_button"><input id="submit-1182269389" type="submit" value=" "/></div><script type="text/javascript">
$("#submit-1182269389").bind("click", function (event) {$.ajax({beforeSend:function (XMLHttpRequest) {
if (!checkAdd()) {
return false;
}
}, data:$("#submit-1182269389").closest("form").serialize(), dataType:"json", label:"Send", onsubmit:"event.returnValue = false; return false;", success:function (data, textStatus) {
if (data.success == true) {
$("#element_add").dialog("close");
var newLine = data.recordLine;
$("#okno").find("table tbody").find("tr:first").before(newLine);
}
else {
$("#element_add").html(data.form);
}
}, type:"post", url:"\/my_app\/records\/append_new_record"});
return false;});
</script></form>
EDIT21.動作しなかったことを試してください
<script type="text/javascript">
$('#addForm').submit(function(event) {
event.preventDefault();
});
</script>
したがって、これはajax全体をブロックします(データはページを更新した後、さらに2回テーブルに追加されます)