jQuery 验证 - 无法调用未定义的方法 'call'
jQuery Validation - Cannot call method 'call' of undefined
不确定为什么这不起作用。
我相信你们都知道我在这里想要实现的目标。
当脚本是 运行 时,我在 jquery.validate.js line:366
上得到一个 Uncaught TypeError: undefined is not a function
,它指的是这段代码:
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 框架,如果我的表单页面对某些人来说没有意义,我深表歉意。
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
可能会破坏插件的正常运行。 As per documentation, "a boolean true is not a valid value"。那是因为onkeyup
能力已经是默认能力了。
每当在 CodeIgniter 项目中使用 jQuery Validate remote
方法或任何 ajax()
时,您还必须在 data
,否则你会得到一个 500 服务器错误。您可以从表单上隐藏的输入元素中选择它。但是,您不需要发送正在评估的输入元素的值,因为默认情况下已经发送了该数据。更改上面的 name
以匹配呈现的表单源代码中显示的内容。
不确定为什么这不起作用。 我相信你们都知道我在这里想要实现的目标。
当脚本是 运行 时,我在 jquery.validate.js line:366
上得到一个 Uncaught TypeError: undefined is not a function
,它指的是这段代码:
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 框架,如果我的表单页面对某些人来说没有意义,我深表歉意。
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
可能会破坏插件的正常运行。 As per documentation, "a boolean true is not a valid value"。那是因为onkeyup
能力已经是默认能力了。每当在 CodeIgniter 项目中使用 jQuery Validate
remote
方法或任何ajax()
时,您还必须在data
,否则你会得到一个 500 服务器错误。您可以从表单上隐藏的输入元素中选择它。但是,您不需要发送正在评估的输入元素的值,因为默认情况下已经发送了该数据。更改上面的name
以匹配呈现的表单源代码中显示的内容。