1

チェックボックスがクリックされたときにjqueryで即興を使用してフォームを送信します。ユーザーがフォームを送信すると、すべてが正常に機能します。ただし、ユーザーがフォームをキャンセルすると、チェックボックスはクリックされたままになります。アクションをキャンセル イベントに関連付けて、プロンプトを閉じ、特定の ID を持つすべてのチェックボックスをオフにしたいと考えています。ユーザーがキャンセルした場合、フォームを閉じてすべてのチェックボックスをオフにするにはどうすればよいですか。ここに私がこれまでに持っているものがあります-特に興味深いのは、実際にフォームを処理する最後の行ですが、役立つ場合に備えて関数全体を含めています:

    function markComplete(activity_id,index)
 {
    var addform = 
        '<h3>Form title</h3>\n\
         <form\n\
           <!--Form stuff goes here --> \n\
        </form>';

    function validate(v,m,f) //prevents submission on empty notes field
  {
  var flag = true;
  if(v == 1)
          {
            if ($("#notes").val()==''){
              $("#notes").addClass("form-error-input");
              flag = false;
            }
            else $("#notes").removeClass("form-error-input");
          }
          return flag;
}

  function callback_add(v,m,f){
      if(v == 1)
      {
        var dataString = 'completion_date='+ f.completion_date + "&notes=" + f.notes;
        $.post("<?php echo $_SERVER['REQUEST_URI']; ?>?mark_complete",dataString);
        $("tr").eq(index).hide("fast");
        $.prompt.close();
      }
      else
      {
        $("#complete_check").removeAttr('checked');
        $.prompt.close();
      }
    }
    $.prompt(addform,{ submit: validate, callback: callback_add, buttons: { Cancel: function (){$("#complete_check").removeAttr('checked');}, Add: 1 },focus: 1 });

この関数は、次に示すチェックボックスがクリックされると呼び出されます。

<input name="mark_complete" id="complete_check" type="checkbox" onchange="markComplete(<?php echo $record['activity_id']; ?>,$(this).index())" />
4

1 に答える 1

0

これを機能させるには、検証コードを変更する必要がありました。

から:

function callback_add(v,m,f){
      if(v == 1)
      {
        var dataString = 'completion_date='+ f.completion_date + "&notes=" + f.notes;
        $.post("<?php echo $_SERVER['REQUEST_URI']; ?>?mark_complete",dataString);
        $("tr").eq(index).hide("fast");
        $.prompt.close();
      }
      else
      {
        $("#complete_check").removeAttr('checked');
        $.prompt.close();
      }

に:

function callback_add(v,m,f){
      if(v == 1)
      {
        var dataString = 'completion_date='+ f.completion_date + "&notes=" + f.notes;
        $.post("<?php echo $_SERVER['REQUEST_URI']; ?>?mark_complete",dataString);
        $("tr").eq(index).hide("fast");
        $.prompt.close();
        $("#new_row").addClass("form-success");
      }
      else
      {
        $('input[type=checkbox]:not("#todo_check")').each(function() //all checkboxes except the "To Do", which should remain checked
      { 
        this.checked = false; 
      });
     }

チャンピオンのように働きました!

于 2012-07-17T18:53:33.080 に答える