オブジェクトに値がない場合にフォーム送信が発生しないように、クライアント側の検証を機能させようとしています。私はしばらくこれに取り組んできましたが、満足のいく解決策を得ることができません。
私のフォーム送信 Js は次のようになります。
$(document).ready(function () {
$('#localUsersDateTime').val(setLocalDateTime());
$('#createentry').ajaxForm({
beforeSubmit: checkTextObjHasValue($('#newentry'), 'You need to add some text.'),
dataType: 'json',
success: function (result) {
$('#entries-list').prepend('<li>' + $('#newentry').val() + '</li>');
$('#newentry').val('').blur();
},
error: function (xhr)
{
try {
var json = $.parseJSON(xhr.responseText);
alert(json.errorMessage);
} catch (e) {
alert('Oops, Something very bad has happened');
}
}
});
return false;
});
ただし、ページが読み込まれると、 beforeSubmit: 関数で指定された checkTextObjHasValue() が実行されるため、チェックは実際のフォーム送信時にのみ実行する必要があります。
function checkTextObjHasValue(obj, message) {
if ($(obj).val() === '') {
alert(message);
return false;
}
return true;
}
この beforeSubmit: コールバックが、ページをロードするだけで実行され、実際のフォーム送信時にのみ実行されるのを防ぐにはどうすればよいですか?