在提交表单按钮中添加javascript

时间:2012-06-04 02:35:45

标签: javascript jquery

我正在尝试在表单提交按钮中添加javascript代码。

   $('#BtExcluir').click(function(event){
      var urlParams = event.target.href.split("/");
      if (! confirm("Tem certeza que deseja excluir o usuário?")) 
         return false;
   });

上面的代码适用于<a>元素,但它不适用于输入提交按钮。求你帮我!

http://jsfiddle.net/f5Xfw/3/

我的完整代码:     @ {     Page.Title =“EditarUsuário”;

// Inicializar variáveis.
int selectedUserId = -1;
var email = "";
var nome = "";

List<string> statusMessages = new List<string>();

// Get the values from the REST-style URL parameters
selectedUserId = UrlData[0].AsInt(-1);
if (selectedUserId < 0){
    ModelState.AddFormError("Erro: Especificado ID de usuário inválido");
}

if(Request["action"] == "Alterar"){
    nome = Request.Form["nome"];
    email = Request.Form["email"];
    // Valida o nome do usuário
    if (nome.IsEmpty())
    {
        ModelState.AddError("nome","Um nome deve ser informado.");
    }
    // Valida o endereço de email
    if (email.IsEmpty())
    {
        ModelState.AddError("email","Um endereço de email deve ser informado.");
    }

    if (!email.IsEmpty() && !Functions.IsValidEmail(email)) {
        ModelState.AddError("email","O endereço de email informado não é válido.");
    }        

    if (ModelState.IsValid)
    {
        // Verifica se o email está cadastrado
        var user = Usuario.PesquisarEmail(email,selectedUserId);
        if (user == null) {
            if (Usuario.AlterarUsuario(nome, email, selectedUserId) > 0)
            {
                statusMessages.Add(String.Format("Alterado usuário de {0}",nome));
            }
            else
            {
                ModelState.AddFormError(String.Format("Erro: Não foi possível alterar o usuário de  "
                            + "{0}", nome));
            }
        }else{
            ModelState.AddFormError("O endereço de email informado já está em uso.");
        }
    }  
}

else if(Request["action"] == "Excluir"){
    if (Usuario.ExcluirUsuario(selectedUserId) > 0){
        statusMessages.Add("Excluído usuário de ID = " + selectedUserId.ToString());
        selectedUserId = -1;
    }
    else{
        ModelState.AddFormError("Erro: Não foi possível excluir o usuário de ID = "
            + selectedUserId.ToString());
    }
}

else if(Request["action"] == "Voltar para Lista"){
    Response.Redirect("~/Admin/Usuarios/Listar.cshtml",false);
}

else if(Request["action"] == "Novo"){
    Response.Redirect("~/Admin/Usuarios/Cadastrar",false);
}

}

2 个答案:

答案 0 :(得分:0)

你说的是event.target.href但是输入按钮没有href属性 - 这是一个锚元素事物(显然,它对你的<a>有效)。因此event.target.href未定义,因此没有.split()方法。这是一个错误,执行将在该行停止,永远不会到达if (!confirm(...

鉴于您实际上从未使用urlParams变量,您只能删除该行。

否则,href的等效形式为action,所以可能是这样的:

$('#BtExcluir').click(function(event){
  var urlParams = $(this).closest("form")[0].action.split("/");
  if (! confirm("Tem certeza que deseja excluir o usuário?")) 
     return false;
});

另请注意,在事件处理程序this中将引用该事件所属的元素 - 它比说event.target更简单。

答案 1 :(得分:0)

第一。我看到您有submiteditdeletenew选项的back to the list按钮。您不会使用相同的默认form action提交所有这4个。

因此,您必须在event.preventDefault();按钮功能中添加submit,或者通过常用按钮替换它们,您可以手动处理重定向。

第二。如果您有一个带链接的完全工作函数,请将其回滚到链接版本以节省大量工作。 =]

第三。不要忘记在Portuguese Stack Overflow中提交Area 51提案 (无耻的推广)

如果您遇到无法解决的问题,我也可以建立一个聊天室。 =]