HTML:
<form id="myForm">
<fieldset>
<ol>
<li>
<label for="data">Data</label>
<input id="data" name="data" type="text" placeholder="Ex.º: 14-02-2014" required>
</li>
<li>
<label for="conta">Conta</label>
<input id="conta" type="text" name="conta" placeholder="Ex.º: " required>
</li>
</ol>
<input id="oknovo" type="submit" value="OK & Novo" />
<input id="okfechar" type="submit" value="OK & Fechar" />
</fieldset>
</form>
JS:
$(document).ready(function () {
var form = $('#myForm');
var botao;
form.validate();
if (form.valid()) {
$("#myForm input[type=submit]").click(function (event) {
botao = $(this).attr('id');
alert("clique " + botao);
});
};
});
Я хочу проверить форму с помощью плагина проверки JQuery.
Если он действителен в соответствии с правилами, указанными в форме HTML, затем укажите, какая из кнопок была нажата. Плагин проверки правильности работает, но форма никогда не действительна, поэтому функция никогда не вызывается для предупреждения об идентификаторе кнопки.
Здесь вы можете увидеть живой JSFiddle .
Поместите свою проверку внутри события клика и начните работу:
$(document).ready(function () {
var form = $('#myForm');
var botao;
form.validate();
$("#myForm input[type=submit]").click(function (event) {
if (form.valid()) {
botao = $(this).attr('id');
alert("clique " + botao);
}
event.preventDefault();
});
});
Рабочая скрипка
Если форма недействительна в DOM ready (чего она никогда не будет), тогда ваш код для добавления обработчика события к кнопке не будет запущен. Вам следует рассмотреть возможность запуска проверки на другом мероприятии, например, при изменении текста в текстовом поле.
Пример:
$('input[type=textbox]').change(function() {
// put your validation code here.
});
Попробуйте добавить event.preventDefault();
$("#myForm input[type=submit]").click(function (event) {
event.preventDefault();
botao = $(this).attr('id');
alert("clique " + botao);
});
validate()
вне обработчика кликов. В противном случае вы настраиваете форму для проверки каждый раз, когда нажимаете, что вам не нужно делать.