2014-02-17 3 views
0

делать некоторые проверки и использовать jQuery Q-Tip для отображения ошибок.

У меня есть несколько одинаковых форм на одной странице и вы хотите, чтобы подсказка об ошибке отображалась под текущей формой отправки кнопки.

Это структура:

<form action='process/reportcomment.php' method='post' class='reportcommentform' name='reportcommentform'> 
    <input type='hidden' value='' name='commentID'> 
    <input type='hidden' value='' name='comment'> 
    <input class='reportcommentsubmit' name='submit-report' type='submit' value='report'> 
</form> 

И тогда мне нужно найти кнопку отправки-отчет с JQuery.

Я попытался это в моем АЯКС ответ:

if (response.cantReport === true) { 
     errorMessage = 'Please wait 30 mins'; 
     errorField = $(this).find('.reportcommentsubmit'); 
     showErrorMessage(errorMessage, errorField); 
    } 

Но не повезло.

Спасибо за помощь!

+2

Что это за элемент 'this' в вашем коде? –

+2

$ ('. Reportcommentsubmit') будет вашей кнопкой. Вам не нужно его искать – Pavlo

+1

Где вы * попробовали * этот код? Когда он выполняется? 'OnSubmit'? –

ответ

2

Попробуйте это:

errorField = $(this).closest('form').find('.reportcommentsubmit'); 

В противном случае, у вас есть оберточный код вокруг $(this), что делает его не один и те же this как кнопку, но один в вашем оберточной JQuery вызова. Когда вы попадаете в такую ​​ситуацию, вам необходимо сохранить родителя this;

var _this = this; 

$.POST('address', {}, function(data) { 
    console.log(_this); // using $(this) here won't be the button's $(this) here because there's a lambda function claiming the scope 
}); 
0

Поправьте, если я ошибаюсь, но то, что я понял, в том, что вы хотите, чтобы получить форму, из которой была нажата кнопка отправить?

Тогда я хотел бы сделать следующее:

$('.reportcommentsubmit').bind('click', handleSubmit); 
... 
function handleSubmit(e) { 
    var form = $(e.target).closest('form'); 
    // do something with my form ... 
    // or : 
    $(e.target).after('<div>Wait Wait wait ... Are you sure everything is correct?</div>') 
} 
0

Все элементы управления формы в виде имеют форму свойство, которое является ссылкой на форму. Так что, если это любое управление в форме и представить кнопка имеет имя, и вы знаете, что это такое, вы можете сделать:

var submitButton = this.form.submitButtonName; 

В противном случае, вы можете цикл по Form.elements сбора в найти кнопку отправки по типу:

var controls = this.form.elements; 
for (var i=0, iLen=controls.length; i<iLen; i++) { 
    if (controls[i].type == 'submit') { 
    // controls[i] is a submit button 
    } 
} 
Смежные вопросы