1

我正在尝试在我的表单提交按钮中放置一个 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 = "Editar Usuá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);
}

} ​</p>

4

2 回答 2

0

您是在说event.target.href,但输入按钮没有href属性 - 这是一个锚元素的东西(显然,这就是为什么它适用于您的<a>)。所以event.target.href是未定义的,因此没有.split()方法。这是一个错误,执行将在该行停止并且永远不会到达if (!confirm(....

鉴于您从未实际使用过该urlParams变量,您可以删除该行。

否则,等效于 的形式hrefaction,所以可能是这样的:

$('#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.

于 2012-06-04T02:46:43.297 回答
0

第一个。我看到您有用于、和选项的submit按钮。您不会以相同的 default 提交所有这 4 个。editdeletenewback to the listform action

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

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

第三。不要忘记承诺51 区的葡萄牙语 Stack Overflow提案。 (无耻推销)

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

于 2012-06-04T02:56:47.650 回答