javascript - 什么可以覆盖 html 输入中的属性?

标签 javascript php html wordpress

我正在使用 PHP 将我想要的值输出到 html 输入中。但出于某种原因,它无法识别 minstep 属性。如何重写 html 属性?

编辑 - 我正在为 Wordpress 定制 Anspress。 Here is a link to look through the files for the plugin .

有什么想法吗??

构造输出的 HTML(ap_ask_form() 在下面的 PHP 代码中)

<div id="ap-form-main" class="active ap-tab-item">
    <?php ap_ask_form(); ?>
</div>

ask_form.php

class AnsPress_Ask_Form
{
    public function __construct()
    {
        add_filter('ap_ask_form_fields', array($this, 'ask_form_name_field'));
    }

    public function ask_form_name_field($args){
        if(!is_user_logged_in() && ap_opt('allow_anonymous'))
            $args['fields'][] = array(
                'name' => 'name',
                'label' => __('Name', 'ap'),
                'type'  => 'text',
                'placeholder'  => __('Enter your name to display', 'ap'),
                'value' => sanitize_text_field(@$_POST['name'] ),
                'order' => 12
            );

        return $args;
    }
}

new AnsPress_Ask_Form;

/**
 * Generate ask form
 * @param  boolean $editing
 * @return void
 */
function ap_ask_form($editing = false){
    global $editing_post;

    $is_private = false;
    if($editing){
        $is_private = $editing_post->post_status == 'private_post' ? true : false;
    }

    $args = array(
        'name'              => 'ask_form',
        'is_ajaxified'      => true,
        'submit_button'     => ($editing ? __('Update question', 'ap') : __('Post question', 'ap')),
        'fields'            => array(
            array(
                'name' => 'title',
                'label' => __('Title', 'ap'),
                'type'  => 'text',
                'placeholder'  => __('Question in one sentence', 'ap'),
                'desc'  => __('Write a meaningful title for the question.', 'ap'),
                'value' => ( $editing ? $editing_post->post_title : sanitize_text_field( @$_POST['title'] ) ),
                'order' => 5,
                'attr' => 'data-action="suggest_similar_questions"',
                'autocomplete' => false,
            ),
            array(
                'name' => 'title',
                'type'  => 'custom',
                'order' => 5,
                'html' => '<div id="similar_suggestions"></div>'
            ),
            array(
                'name' => 'description',
                'label' => __('Description', 'ap'),
                'type'  => 'editor',
                'desc'  => __('Write description for the question.', 'ap'),
                'value' => ( $editing ? apply_filters('the_content', $editing_post->post_content) : @$_POST['description']  ),
                'settings' => apply_filters( 'ap_ask_form_editor_settings', array(
                    'textarea_rows'     => 8,
                    'tinymce'           => ap_opt('question_text_editor') ? false : true,
                    'quicktags'         => ap_opt('question_text_editor') ? true : false ,
                    'media_buttons'     =>false,
                )),
            ),
            array(
                'name'  => 'ap_upload',
                'type'  => 'custom',
                'html' => ap_post_upload_form(),
                'order' => 10
            ),
            array(
                'name' => 'parent_id',
                'type'  => 'hidden',
                'value' => ( $editing ? $editing_post->post_parent : get_query_var('parent')  ),
                'order' => 20
            )
        ),
    );

    if(ap_opt('allow_private_posts'))
        $args['fields'][] = array(
            'name' => 'is_private',
            'type'  => 'checkbox',
            'desc'  => __('Only visible to admin and moderator.', 'ap'),
            'value' => $is_private,
            'order' => 12,
            'show_desc_tip' => false
        );

    if(ap_opt('recaptcha_site_key') == '')
        $reCaptcha_html = '<div class="ap-notice red">'.__('reCaptach keys missing, please add keys', 'ap').'</div>';
    else
        $reCaptcha_html = '<div class="g-recaptcha" id="recaptcha" data-sitekey="'.ap_opt('recaptcha_site_key').'"></div><script type="text/javascript"
src="https://www.google.com/recaptcha/api.js?hl='.get_locale().'&onload=onloadCallback&render=explicit"  async defer></script><script type="text/javascript">var onloadCallback = function() {
        widgetId1 = grecaptcha.render("recaptcha", {
          "sitekey" : "'.ap_opt('recaptcha_site_key').'"
        });
      };</script>';

    if(ap_opt('enable_recaptcha'))
        $args['fields'][] = array(
            'name' => 'captcha',
            'type'  => 'custom',
            'order' => 100,
            'html' => $reCaptcha_html
        );

    /**
     * FILTER: ap_ask_form_fields
     * Filter for modifying $args
     * @var array
     * @since  2.0
     */
    $args = apply_filters( 'ap_ask_form_fields', $args, $editing );

    if($editing){
        $args['fields'][] = array(
            'name'  => 'edit_post_id',
            'type'  => 'hidden',
            'value' => $editing_post->ID,
            'order' => 20
        );
    }

    $form = new AnsPress_Form($args);

    echo $form->get_form();
    echo ap_post_upload_hidden_form();
}

/**
 * Generate edit question form, this is a wrapper of ap_ask_form()
 * @return void
 * @since 2.0.1
 */
function ap_edit_question_form()
{
    ap_ask_form(true);
}

我使用 Wordpress Hook “plugins_loaded”对此插件进行了扩展(下面的 ask_form_amount_field($args, $editing) 是我制作的类(class)的一部分;如果有人希望我尽可能地发布它,只是试图显示所有相关信息而不让它太冗长......)

public function ask_form_amount_field($args, $editing){
        if(wp_count_terms('question_amount_field') == 0)
            return $args; //Taxonomy stuff?

        global $editing_post;

        if($editing){
            $amount_field = get_the_terms( $editing_post->ID, 'question_amount_field' );
            $amount_field = $amount_field[0]->term_id;
        } //More things purely related to taxonomy, it seems.

        $args['fields'][] = array(
            'name' => 'amount_field',
            'label' => __('Amount field label', 'amount_field_for_anspress'),
            'type'  => 'number',
            'value' => ( $editing ? $amount_field :  sanitize_text_field(@$_POST['amount_field'] )), 
            'taxonomy' => 'question_amount_field',
            'orderby' => ap_opt('form_amount_field_orderby'),
            'desc' => __('Enter the amount you wish to tip someone for fulfilling your request.', 'amount_for_anspress'),
            'order' => 7,
            'min' => 0.50,
            'step' => 0.25
        );

        return $args;

    }

}}//The class ends here; its beginning is not shown above

function find_do_for_anspress() {
    $discounts = new Find_Do_For_AnsPress();
}
add_action( 'plugins_loaded', 'find_do_for_anspress' );

最佳答案

这是一个使用 jQuery 的更短的 javascript 解决方案,请注意,由于 Wordpress 实现 jQuery 的方式,您可能需要将 $ 更改为 jQuery

//set values
minValue = 100;
stepValue = 100;

//select element by ID, update min attribute
$("#my-element-id").attr("min", minValue);

//select element by ID, update step attribute
$("#my-element-id").attr("step", minValue);

这里是关于 jQuery attr() 的文档以获取更多信息,它可用于获取和/或设置属性: https://api.jquery.com/attr/

关于javascript - 什么可以覆盖 html 输入中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856452/

相关文章:

Javascript 问题管理变量

javascript - 用颜色 D3.js 填充 map

php - SQL 服务器 PHP IIS

javascript函数将当前时间(从纪元)四舍五入到最近的分钟

php - 在 PHP echo 中运行 PHP?

javascript - 有没有更简单的方法在 JavaScript 中实现概率函数?

javascript - JavaScript 中有没有没有原型(prototype)的对象吗?

php - 在php中使用mysql更新查询内的变量

html - 如何在没有 jQuery 的情况下使用包裹在 <li> 中的同级 <a> 使子元素(<div> 和 <div)可点击

javascript - 如何从数组中检索并显示本地存储中的数据?