Was kann die Attribute in einer HTML-Eingabe überschreiben?

Lesezeit: 6 Minuten

Benutzer-Avatar
DarthVoid

Ich gebe die gewünschten Werte in eine HTML-Eingabe mit PHP aus. Aber aus irgendeinem Grund erkennt es das nicht min und step Attribute. Wie können HTML-Attribute überschrieben werden?

BEARBEITEN – Ich passe Anspress für WordPress an. Hier ist ein Link, um die Dateien für das Plugin zu durchsuchen.

Irgendwelche Gedanken??

HTML, das die Ausgabe strukturiert (ap_ask_form() ist im PHP-Code unten)

<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);
}

Meine Erweiterung zu diesem Plugin mit dem WordPress-Hook “plugins_loaded” (das ask_form_amount_field($args, $editing) unten ist Teil einer Klasse, die ich gemacht habe; Wenn jemand möchte, dass ich es poste, kann ich es tun, indem ich nur versuche, alle relevanten Informationen zu zeigen, ohne es zu langwierig zu machen …)

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' );

  • Dies gibt nichts aus. Wenn die Ausgabe das Problem ist, posten Sie den Teil, der die Ausgabe durchführt. oder wenn dies Teil einer Bibliothek / eines Frameworks ist, posten Sie, welche Bibliothek Sie verwenden.

    – I habe einmal mit einem Bär gekämpft.

    30. September 2015 um 1:49 Uhr

  • @adelphia Ich denke, das deckt alles ab. Da ich ein Neuling bin, nehme ich an, dass dieses Problem von der Community abgelehnt wird, also wollte ich es nur wissen allgemein Was überschreibt HTML-Attribute? Zum Beispiel, wenn ich eine einfache hatte <input type="number" value="0.50" step="0.25"> Welche Art von Code könnte es filtern, um etwas anderes zu sagen? Gibt es etwas in PHP, das HTML-Attribute ändern kann? Wenn ja, kann ich damit beginnen, alle Codezeilen in diesem Plugin nach Schlüsselwörtern zu durchsuchen

    – DarthVoid

    30. September 2015 um 2:31 Uhr

  • Die Community lehnt Leute ab, die ihre Sorgfaltspflicht nicht erfüllen und keine richtige Frage stellen, sie lehnt Leute nicht ab, nur weil sie Noobs sind eine Option? das klingt nach dem einfachen weg..

    – I habe einmal mit einem Bär gekämpft.

    30. September 2015 um 2:56 Uhr

  • Sicher, versuchen wir es mit einer JS-Lösung. Was schlagen Sie vor?

    – DarthVoid

    30. September 2015 um 3:17 Uhr


  • @Adelphia hast du irgendwelche Suchbegriffe, mit denen ich vielleicht anfangen könnte zu googeln?

    – DarthVoid

    1. Oktober 2015 um 1:50 Uhr

Hier ist eine kürzere Javascript-Lösung mit jQuery. Bitte beachten Sie, dass Sie möglicherweise $ in jQuery ändern müssen, da WordPress jQuery implementiert

//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);

Hier ist die Dokumentation zu jQuery attr() für weitere Informationen, es kann verwendet werden, um Attribute zu erhalten und/oder zu setzen:
https://api.jquery.com/attr/

Ok, Sie sagten, eine JavaScript-Lösung würde funktionieren, also überschreiben Sie das Attribut in JS wie folgt. Mit dieser Methode müssen Sie Ihrem Artikel ein ID-Attribut zuweisen. Wir gehen davon aus, dass Ihr Element ein hat id="myelement" Attribut, um es zu identifizieren.

Hier ist die jsFiddle Beispiel mit Kommentaren, die den Code erklären.

var myelement = document.getElementById('myelement');
myelement.removeAttribute("min");
myelement.removeAttribute("step");
var min = document.createAttribute('min');
var step = document.createAttribute('step');
min.value="100"; //put your new values here
step.value="100"; //put your new values here
myelement.setAttributeNode(min);
myelement.setAttributeNode(step);
alert(myInput.getAttribute('custom-attr'));

1385630cookie-checkWas kann die Attribute in einer HTML-Eingabe überschreiben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy