Búsqueda de sitios web

javascript - Imprimir lo que hay en los campos de entrada


Tengo una página simple llena de campos de entrada y necesito que se impriman con el contenido escrito por el usuario.

Hasta ahora puedo imprimir los campos de entrada, pero siempre vacíos por dentro.

class VM{

PrintDiv() {
        let self = this;
        var printContents = document.getElementById('print').innerHTML;
        var originalContents = document.body.innerHTML;

        document.body.innerHTML = printContents;
        window.print();
        location.reload();
    }
  }  
    
    ko.applyBindings(new VM);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div id="print">some text<input /></div>     
    <br />
    <button data-bind="click: PrintDiv">Print</button>

Respuesta #1

Bueno, quieres obtener el texto del campo de entrada, pero estás obteniendo HTML de todo el div con id print. Aquí hay una solución simple.

class VM {

  PrintDiv() {
    let input = <HTMLInputElement> document.getElementById('print');
    let printContents = input.value;
    document.getElementById('content').innerText = printContents;
    location.reload();
  }
  
}

ko.applyBindings(new VM);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div>some text<input id="print" /></div>
<br />
<button data-bind="click: PrintDiv">Print</button>

<div id="content"></div>