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

1位。、、およびオプションのsubmitボタンがあります。これら 4 つすべてを同じデフォルトで送信することはありません。editdeletenewback to the listform action

したがって、ボタンの機能を追加するかevent.preventDefault();submitリダイレクトを手動で処理できる一般的なボタンに置​​き換える必要があります。

2番目。リンクを使用して完全に機能する機能がある場合は、それをリンク バージョンにロールバックして、多くの作業を節約します。=]

3番目。Area 51のポルトガル語の Stack Overflow提案にコミットすることを忘れないでください。 (恥知らずな宣伝)

ここで解決できない問題が発生した場合は、チャット ルームを作成することもできます。=]

于 2012-06-04T02:56:47.650 に答える
0

あなたは言ってevent.target.hrefいますが、入力ボタンにはプロパティがありませんhref-それはアンカー要素のものです(これは明らかに、あなたの<a>. 未定義event.target.hrefであるため、メソッドがありません.split()。これはエラーであり、実行はその行で停止し、if (!confirm(....

変数を実際に使用したことがない場合は、urlParamsその行を削除するだけです。

それ以外の場合、 the に相当する形式hrefは theactionであるため、おそらく次のようになります。

$('#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 に答える