2017-01-27 1 views
0

Ich versuche, einen Platzhalter für Formulare in concrete5 mit einem Tablelessforms Addon zu machen.Platzhalter hinzugefügt über einen str_replace

Bisher habe ich das Formular aktiviert, um Platzhalter für Eingaben mit dem folgenden Code zu erzeugen. Allerdings, die TextArea beim Anzeigen, die Funktion str_replace ersetzt nicht und füge meinen Platzhalter hinzu.

Hier ist der Code unten und ein Link zu der Website: http://79.170.44.138/holidayletmidwales.co.uk/newsite/

<div class="fields"> 

    <?php foreach ($questions as $question): ?> 
     <div class="field field-<?php echo $question['type']; ?>"> 
      <?php if ($question['textarea']) { 
         $question['textarea'] = str_replace('rows="3"', 'rows="3" placeholder="'.$question['question'].'"', $question['textarea']); 
        echo $question['textarea'];   
        } else { 
         $question['input'] = str_replace('value=""', 'value="" placeholder="'.$question['question'].'"', $question['input']); 
         echo $question['input'];   
       } ?>  
      </div> 
    <?php endforeach; ?> 

</div><!-- .fields --> 

Jede Hilfe wäre sehr dankbar.

+1

Ihr Code wäre viel einfacher zu lesen, wenn Sie '' nicht um jede Zeile in einem zusammenhängenden Block von PHP-Code verwenden – RiggsFolly

Antwort

1

Das Suchen und Ersetzen funktioniert nicht, da Sie nach rows="3" suchen, wenn das Markup rows="5" hat. Eine bessere Option, statt nach einem Attribut zu suchen, das sich ändern könnte, wäre, den Anfang des Tags zu finden, z. str_replace ('<input', '<input placeholder="foo"', $html) oder, wenn möglich, die Klasse zu erweitern, die die Tags erzeugt, um Platzhalter nach Bedarf zu handhaben.

Es ist alles ein wenig irrelevant, da Textbereiche Platzhalter nicht unterstützen. :)

+0

Danke, dass ich das nicht wusste. Ich denke, ich werde meinen Textbereich in einen Input umwandeln und ihm Reihen geben oder mit einer anderen Idee herumspielen. Nochmals vielen Dank – Imran

+0

Was Sie tun könnten, je nachdem, was Sie tun, könnte einfacher sein als die Simulation von Funktionen mit mehreren Eingaben, ist Position ein Element mit Ihrem Platzhalter Text über das Textfeld (auf Zeiger-Events: keine) dann mit JavaScript , es auf dem Änderungsereignis des Textareals anzeigen/ausblenden, je nachdem, ob es Inhalt hat oder nicht. –

+0

Nur um dies zu aktualisieren: Ich habe gerade entdeckt, dass HTML5 tatsächlich ein Platzhalterattribut zu Textareas hinzugefügt hat und ich nicht erkannt hatte, so dass sie verwendet werden können. Entschuldigung für die Fehlinformation. –