我有一个自定义字段(我使用高级自定义字段插件)设置为在创建新帖子时显示。用户必须输入4位数的年份。不超过4个字符,不少于。我的职能如下。php代码:
function make_year_created_equal_4_chars_init(){
wp_enqueue_script(\'jquery\');
}
function make_year_created_equal_4_chars() {
echo "<script type=\'text/javascript\'>\\n";
echo "
jQuery(\'#acf-field-artwork_created\').blur(function() {
selected = jQuery(\'#acf-field-artwork_created\').length;
if (selected != 4) {
alert( \'A 4 digit year must be entered in the Artwork Created field\' );
}
});
";
echo "</script>\\n";
}
add_action(\'admin_init\', \'make_year_created_equal_4_chars_init\');
add_action(\'edit_form_advanced\', \'make_year_created_equal_4_chars\');
add_action(\'edit_page_form\', \'make_year_created_equal_4_chars\');
这是我的标记:
<input type="text" id="acf-field-artwork_created" class="text" name="fields[field_52e10c7db579e]" placeholder="" />
除一个方面外,这一切都很好。我没有报告JS错误,如果输入的字符少于4个或多于4个,那么一旦我离开字段(onblur),就会触发错误警报。
我的问题是,即使我使用4个字符,它仍然会触发。
感谢您的帮助。
最合适的回答,由SO网友:webtoure 整理而成
您的代码有许多问题,但最重要的是您需要调用val
在文本输入上。以下是您的make_year_created_equal_4_chars
函数可能看起来:
function make_year_created_equal_4_chars() {
?>
<script type=\'text/javascript\'>
// This is a shorthand for "jQuery(document).ready()"
jQuery(function($) {
$(\'#acf-field-artwork_created\').blur(function() {
// Please notice the declaration of \'selected_length\'.
// It is important to declare it with \'var\' so that
// you don\'t end up with it in the global scope.
var selected_length = $(this).val().length;
if (selected_length != 4) {
alert( \'A 4 digit year must be entered in the Artwork Created field\' );
}
});
});
</script>
<?php
}