What html element is capable of being assigned an ID and is also an alternative for the <input>
element? Because currently an element is being used in order to update that block of text based on user input; however, appearance-wise, the <input>
element doesn't work since it has the large rectangular block around it.
<div id="myModal">
...
<input type="text" id="txtUserName" size="150" disabled></input>
...
</div>
<script>
...
$('#txtUserName',$('#myModal')).val('Jim Smith');
...
</script>
In addition to the rectangular block around the text there also appears to be a limit on how far the box will expand.
Thoughts or suggestions on how the updated text can blend in seamlessly with the rest of the text? Because ultimately the goal is for the user to be able to send what appears in the modal (a combination of pre-filled text and the user input) to another person via email.
The id attribute assigns an identifier to the <input> element. The id allows JavaScript to easily access the <input> element. It is also used to point to a specific id selector in a style sheet. Tip: id is a global attribute that can be applied to any HTML element.
The <input type="text"> defines a single-line text field. The default width of the text field is 20 characters.
You could use the contentEditable
attribute to make any element editable.
Example Here
In this case, just use a span
, specify your id
and set contentEditable="true"
.
In doing so, the element will blend in with the paragraph, and it can still be edited by the end user.
<span contentEditable="true" id="txtUserName"></span>
Since the element is no longer an input
, use the .text()
method as opposed to .val()
.
$('#txtUserName').text('Jim Smith');
..or with plain JS:
document.getElementById('txtUserName').textContent = 'Jim Smith';
Result when focusing on the element:
..and if you don't want the outline: (example)
span[contentEditable="true"] {
outline: none;
}
One of the benefits of using the contentEditable
attribute is that the text will wrap and continue to behave as a span
element. This isn't achievable using an input.
If you want those values to be editable, the easiest way is to keep using inputs as you are already doing. To make those inputs better blend with the rest of the content, you can easily change their styles via CSS. Just assign the inputs a class and then give it some styles in your stylesheet.
If instead those elements are only going to be changed via script, and not edited directly by the user (with the user editing those values through other means), you can replace them with spans (for example <span id="userName"></span>
) and setting their content with $('#userName').text('Jim Smith');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With