【问题标题】:Tie event to jquery impromptu form cancel将事件绑定到 jquery 即兴表单取消
【发布时间】:2023-03-06 20:27:01
【问题描述】:

在单击复选框时使用 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())" />

【问题讨论】:

  • 尝试添加$("#complete_check").attr("checked", false);
  • 我假设您的意思是取消功能。抱歉,没用...我怀疑即兴不支持与按钮相关的功能,所以我需要找到另一种方法。

标签: jquery impromptu


【解决方案1】:

我必须修改验证代码才能让它工作:

发件人:

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; 
      });
     }

像冠军一样工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多