Не уверен, почему это не работает.
Я уверен, что вы все знаете, чего я пытаюсь достичь здесь.
Когда скрипт запускается, я получаю Uncaught TypeError: undefined is not a function
на jquery.validate.js line:366
который ссылается на этот кусок кода:
function delegate( event ) {
var validator = $.data( this[ 0 ].form, "validator" ),
eventType = "on" + event.type.replace( /^validate/, "" ),
settings = validator.settings;
if ( settings[ eventType ] && !this.is( settings.ignore ) ) {
settings[ eventType ].call( validator, this[ 0 ], event );
}
} ^^^^ HERE
Я использую codeigniter2 framework, поэтому извиняюсь, если моя страница формы не имеет смысла для некоторых.
new_page.php (соответствующий бит)
<?php echo form_open(site_url('admin/manage_pages/new_page'),
array('id' => 'new-page-form')) . PHP_EOL; ?>
<div class="form-group">
<?php echo form_label('Page Title', 'page-title',
'class="control-label"') . PHP_EOL; ?>
<?php echo form_input(array(
'name' => 'page-title',
'id' => 'input-page-title',
'max-length' => '255',
'placeholder' => 'Enter Page Title',
'class' => 'form-control')) . PHP_EOL; ?>
</div><!-- /.form-group -->
<div class="form-group">
<?php echo form_label('Url', 'slug', 'class="control-label"'); ?>
<span id="input-slug-span" class="form-control">
<span id="input-slug-static"><?php echo site_url(); ?></span>
<?php echo form_input(array(
'name' => 'slug',
'id' => 'input-slug')); ?>
</span>
</div><!-- /.form-group -->
и в new_page.validation.js
$(document).ready(function() {
//--------------------------------------------------------------------------------------
//
// New Page Client Side Validation
//
//--------------------------------------------------------------------------------------
$('#new-page-form').validate({
onkeyup:true,
rules: {
'page-title': {
required: true,
remote: {
url: 'new_title_exists',
type: 'post',
data: {
'page-title': function() { return $("#input-page-title").val(); }
}
}
},
'slug': {
required: true,
remote: {
url: 'new_slug_exists',
type: 'post',
data: {
'slug': function() { return $('#input-slug').val(); }
}
}
}
},
messages: {
'page-title': {
required: 'Page Title is required.',
remote: 'Page Title must be unique.'
},
'slug': {
required: 'A URL slug is required',
remote: 'The URL must be unique.'
}
}
})
})
Любая помощь будет благодарна! Ура ребята
$('#new-page-form').validate({
// onkeyup:true, // REMOVE THIS
rules: {
'page-title': {
required: true,
remote: { // element's value IS always sent
url: 'new_title_exists',
type: 'post',
data: { // MUST send the CSRF Token Value
'csrftoken': function() {
return $('input[name="csrftoken"]').val();
}
}
}
},
....
onkeyup: true
потенциально может нарушить нормальное функционирование плагина. Согласно документации, «логическое значение true не является допустимым значением». Это потому что onkeyup
Способность уже по умолчанию.
Всякий раз, когда вы используете jQuery Validate remote
метод или любой ajax()
в проекте CodeIgniter вы также должны отправить токен CSRF в data
в противном случае вы получите 500 ошибок сервера. Вы можете выбрать это из скрытого элемента ввода в вашей форме. Однако вам не нужно отправлять значение оцениваемого элемента ввода, потому что эти данные уже отправляются по умолчанию. Изменить name
выше, чтобы соответствовать тому, что показано в отрендеренном исходном коде вашей формы.
Других решений пока нет …