#jquery #jquery-plugins #jquery-validate
#jquery #jquery-плагины #jquery-проверка
Вопрос:
У меня есть одна форма, и на ней есть 2 кнопки отправки с 3 текстовыми полями. При нажатии кнопки текстовое поле 1 должно быть проверено, а две другие кнопки отправки B должны быть проверены. Я использовал обработчик отправки и отправил форму с помощью ajax.
Моя проблема в том, что если я нажимаю на A, то он не вызывает обработчик отправки B, если B нажат. Независимо от того, что нажато первым, другой метод не работает.
Пожалуйста, помогите!
Мой код выглядит следующим образом :
function set_new_rate(oid) {
alert("set_new_rate");
$("#TestForm").validate({
event: "custom",
rules: {
client_new_rate: {
required: true,
number: true
},
agent_new_rate: {
required: true,
number: true
}
},
messages: {
client_new_rate: {
required: "Required",
number: "Invalid Rate"
},
agent_new_rate: {
required: "Required",
number: "Invalid Rate"
}
},
submitHandler: function() {
var client_new_rate = $('#client_new_rate').val();
var agent_new_rate = $('#agent_new_rate').val();
var answer = confirm("Set New Rate for this Order?")
if (answer)
{
$.post('http://localhost/fc/index.php/disp/set_new_rate/',{order_id:oid,client_new_rate:client_new_rate,agent_new_rate:agent_new_rate},function(data){
if(data==1)
{
$('#rateupdated').html('<div id="display_message" class="msg msg-ok" style="margin:0 0 5px 0px;width:180px;"><p>Rate Updated Successfully!</p></div>');
$("#rateupdated").fadeIn(0).fadeOut(5000);
$('#rec_ord_cnt_prc' oid).html(client_new_rate);
$('#client_old_rate').html(client_new_rate);
$('#agent_old_rate').html(agent_new_rate);
$('#client_new_rate').val('');
$('#agent_new_rate').val('');
}
});
}
}
});
}
function add_note(oid)
{
alert("add_note");
$("#TestForm").validate({
event: "custom",
rules: {
note_description: {
required: true
}
},
messages: {
note_description: {
required: "Required"
}
},
submitHandler: function() {
alert("add_note _ sh");
var note_description = $('#note_description').val();
var note_type = $('input:radio[name=note_type]:checked').val();
var answer = confirm("Add this " note_type " Note?")
if (answer)
{
$.post('http://localhost/fc/index.php/disp/add_note/',{order_id:oid,note_description:note_description,note_type:note_type},function(data){
if(data==1)
{
$('#noteadded').html('<div id="display_message" class="msg msg-ok" style="margin:5px 5px 5px 0px;width:282px;"><p>Note Added Successfully!</p></div>');
$('#note_description').val('');
$("#noteadded").fadeIn(0).fadeOut(5000);
}
});
}
}
});
}
Я использую плагин проверки Jquery.
Комментарии:
1. Я не знаю, почему вы хотите проверить этот способ, я думаю, что проще, если у вас есть отдельные формы, поскольку они выполняют разные действия.
Ответ №1:
Как насчет использования встроенного в jquery дескриптора события вместо вызова submitHandler.
$('.MyForm .set_rate').click(function(e){
set_new_rate(oid);
//here your submitHandler call function
});
$('.MyForm .add_note').click(function(e){
add_note(oid);
//here your submitHandler call function
});
(Я попытался скопировать функцию, но текстовое поле выдало мне ошибку. В ваших функциях просто удалите submitHandler в обоих случаях.