jQuery确认按钮不在弹出的confirm()对话框中

时间:2013-03-13 02:58:15

标签: javascript jquery

我有一个很长的表单,我正在使用jQuery validate插件进行验证。表单验证后,我希望提交按钮更改为确认按钮,上面有关于检查表单是否有错误的相应消息。再次单击此按钮时,只要仍填写所有必填字段,此时应立即提交表单。 我有以下内容:

var confirmed = function(){
  alert($("#someForm").attr("name")); //just to see the function fire...
  $("#someForm").submit();  
  return true;
}

$(document).ready(function(){
  $("#someForm").validate({
    submitHandler: function(form){
      var oldBtn = $("#submit");
      var newBtn = oldBtn.clone();
      newBtn.click(confirmed)
      newBtn.text("Confirm");
      newBtn.insertBefore(oldBtn);
      oldBtn.remove();
      newBtn.attr({"id": "submit"});
    }
  });
});

...

<button type="submit" id="submit">Submit</button>

它可以验证表单,然后按钮更改文本,单击时函数将触发(警报中包含表单的名称),但表单永远不会提交为真实的。 任何帮助或想法将不胜感激。

由于

编辑: 好吧,我想我已经弄明白了。我隐藏了提交按钮和一个名为Validate的按钮,只是检查表单是否经过验证而不使用$("#someForm").valid();提交如果检出,我隐藏“提交”按钮并显示“确认”按钮以及一点点关于检查您提交的信息等。见下文:

$(document).ready(function(){
  $("#submitBtn").hide();
  $("#confMessage").hide();
  $("#someForm").validate();
});

var checkValid = function(){
  var isValid = $("#volunteer").valid();
  if(isValid){
    $("#validBtn").remove();
    $("#submitBtn").show();
    $("#confMessage").show();
  }
}

...

<p id="confMessage">Please review your submission.</p>    
<p><button id="validBtn" onclick="checkValid()">Validate</button>    
<button type="submit" id="submitBtn">Submit</button></p>

完美无瑕,比我的原始代码更清晰!

2 个答案:

答案 0 :(得分:0)

删除oldBtn.remove();然后它就可以了。

答案 1 :(得分:0)

你有

  var oldBtn = $("#submit");
  var newBtn = oldBtn.clone();

以上行是在html中添加相同的DOM,以便复制ID也是如此。
并且每个DOM的ID必须是唯一的 尝试为克隆的DOM重写ID并尝试。

newBtn.click(confirmed)

此代码表示您将事件分配给newBtn而不是调用click事件。

要拨打click活动,请使用.trigger()