2014-03-05 33 views
-1

我有一个按钮(HTML5):改变按钮式触发点击事件

<form id="frmProfileEdit" method="post" action=""> 
<button id="btnProfileEdit" name="btnProfileEdit" type="button" class="btn">Bearbeiten</button> 
</form> 

在我的JS代码,当文档准备好事件被激发,我注册了一个事件处理程序的按钮一次

var $elem; 
function registerProfileFormValidator() 
{ 
    formValidator = $("#frmProfileEdit") 
         .validate(
          { 
           rules: profileRules, 
           highlight: function (element) 
             { 
              $elem = $(element); 
              $elem.addClass("error"); 
              $elem.parents("form").find('button[type="submit"]').attr("disabled", "disabled"); 
             }, 
           unhighlight: function(element, errorClass, validClass) 
              { 
               $elem = $(element); 
               $elem.removeClass(errorClass).addClass(validClass); 
               $elem.parents("form").find('button[type="submit"]').removeAttr("disabled"); 
              }, 
           errorPlacement: function() {} 
          } 
         ); 
} 
function profileEditClick(eventArgs) 
{ 
    $('#frmProfileEdit input[type="text"]').removeAttr("disabled"); 
    $("#btnProfileEdit").text("speichern"); 
    $("#btnProfileEdit").addClass("btn-success"); 
    $("#btnProfileEdit").attr("type", "submit"); 
    $("#btnReset").removeAttr("disabled"); 
    registerProfileFormValidator(); 
} 
$(document).ready(function() 
{ 
    $("#btnProfileEdit").one("click", profileEditClick); 
}); 

那么,为什么触发点击事件后更改类型从按钮提交?

我使用插件jquery验证。为了完成,请探索一些自己的规则的形式。

+0

从第一次点击后按钮开始并将其改为提交的目的是什么?似乎应该有更好的方法来实现这一目标。 – Sparky

+0

我想要一个带有输入元素的表单,它在初始化时被禁用。然后如果你点击编辑,它应该变成可编辑的。如果你这样做,该按钮也应该变成一个提交按钮,以便用户可以发送表单。 – alpham8

回答

0

我想你误解了.validate()方法的用途。

它的目的是为了初始化插件在你的窗体上,没有别的。它只能被调用一次,因为任何后续调用都会被忽略。一旦初始化您的表单,触发操作将自动触发发生各种事件,例如按钮点击。

将您的整个.validate()调用以外的任何clicksubmit处理函数和DOM ready事件处理函数。这将确保它被调用一次;并在表格构建完成后。

您也不应该有一个空的errorPlacement函数。如果您尝试禁用表单上的错误位置,则可以使用return false

$(document).ready(function() { 

    var $elem; 

    formValidator = $("#frmProfileEdit").validate({ // initialize the plugin 
     rules: profileRules, 
     highlight: function (element) { 
      $elem = $(element); 
      $elem.addClass("error"); 
      $elem.parents("form").find('button[type="submit"]').attr("disabled", "disabled"); 
     }, 
     unhighlight: function(element, errorClass, validClass) { 
      elem = $(element); 
      $elem.removeClass(errorClass).addClass(validClass); 
      $elem.parents("form").find('button[type="submit"]').removeAttr("disabled"); 
     }, 
     errorPlacement: function() { // do not leave this empty 
      return false; // disable the default function 
     } 
    }); 

    function profileEditClick(eventArgs) { 
     $('#frmProfileEdit input[type="text"]').removeAttr("disabled"); 
     $("#btnProfileEdit").text("speichern"); 
     $("#btnProfileEdit").addClass("btn-success"); 
     $("#btnProfileEdit").attr("type", "submit"); 
     $("#btnReset").removeAttr("disabled"); 
    } 

    $("#btnProfileEdit").one("click", profileEditClick); 

}); 
+0

这并没有改变任何东西。 – alpham8

+0

@ alpham8,如果没有其他的东西,它应该是教育正常的方式来初始化这个插件。至于回答你的问题,你需要对你的OP做一些编辑,这样人们才能更好地理解你想要做什么。 – Sparky

相关问题