2012-06-04 5 views
1

Я пытаюсь поместить javascript-код в свою кнопку отправки формы.Добавить javascript в submit form button

$('#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" Новичок;

// 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); 
} 

}

+3

Это не работает, потому что '' '' '' '' '' '' '' '' '' ', который вы пытаетесь получить доступ к вашей функции. Если вы не разместите свой html или более код, вы не получите лучшего ответа, чем это. –

+0

Скрипка выглядит неплохо, но где вы храните URL-адрес, который хотите открыть при нажатии этой кнопки? –

+0

большое спасибо. Я удалил строку, вызывающую href, и она работает. – Ronaldo

ответ

0

1-й. Я вижу, у вас есть submit кнопок для edit, delete, new и back to the list вариантов. Вы не будете отправлять все эти 4 с одинаковым значением по умолчанию formaction.

Следовательно, вам нужно либо добавить event.preventDefault(); в функцию submit кнопок, либо заменить их на обычные кнопки, где вы можете обрабатывать переадресацию вручную.

2-й. Если у вас есть полностью работоспособная функция со ссылками, откатите ее до версии ссылок, чтобы сэкономить много работы. =]

3rd. Не забудьте совершить предложение Portuguese Stack Overflow в Area 51.
(бесстыдное продвижение)

Я также могу создать чат-комнату, если у вас есть проблемы, которые вы не можете решить здесь. =]

+0

Взгляните на мой код целиком. Я обрабатываю различные действия в коде. – Ronaldo

+0

Я поставил свой полный код в первом сообщении. – Ronaldo

+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.