JSFiddle - React, Tailwind, and code Playground
HTML
<body>
<div id="postText">
тестовая строчка простая<br>
тестовая строчка простая<br>
тестовая строчка простая<br>
тестовая строчка простая<br>
</div>
<div>
<input type="text" id="postName" class="form-control" name="postName" value="" id="title" />
</div>
</body>
CSS
/* общий стиль */
input[type="checkbox"]{zoom:1.5; }
.hr{border-bottom: 1px solid #000}
.block{ width: 450px; padding: 10px; border: 1px solid #000;float: right; }
.information_json * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* стиль динамических полей*/
.pull-right {float: left;}
.form-control {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
}
.btn {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
JavaScript
// возвращаем текст более валидным
function getTrueText(txt)
{
txt = txt.replace(/ {1,}/g," ");
txtw = txt.split(' ');
txtl = txtw.length;
inqote = false;
for (var i = 0; i < txtl; i++) {
if (txtw[i].indexOf("'") == 0 || txtw[i].indexOf('"') == 0) {
//если есть кывачки в начале, то пропускаем
inqote = true; //но отметим что вошли в зону ковычек
} else if (txtw[i].lastIndexOf("'") == txtw[i].length - 1 || txtw[i].lastIndexOf('"') == txtw[i].length - 1) {
//если есть кывачки в конце, то пропускаем
inqote = false; //но отметим что вышли из зоны ковычек
} else if (i != 0 && (txtw[i - 1].lastIndexOf('.') == txtw[i - 1].length - 1 ||
txtw[i - 1].lastIndexOf('!') == txtw[i - 1].length - 1)) {
//если предыдущее слово заканчивается точкой или воскл. знаком
if (/[a-zA-Z]+/g.test(txtw[i][0]) == false) txtw[i] = txtw[i][0].toUpperCase() + txtw[i].substr(1);
} else {
//а это простое слово, его занижаем, если оно не внутри кавычек
if (/[a-zA-Z]+/g.test(txtw[i][0]) == false && inqote == false) txtw[i] = txtw[i].toLowerCase();
}
}
return txtw.join(' ').trim();
}
var inputFocused;
$('div').on('focus', '#prizName,#postName, #description, #additional',function() {
inputFocused = $(this);
});
$('#postText').on('mouseup', function(e) {
if (inputFocused == null) {
return false;
}
if(getSelectedText()!="") {
if (inputFocused != null) {
if (e.ctrlKey === true) {
inputFocused.val(getTrueText(getSelectedText()));
} else if (e.altKey === true) {
inputFocused.val(getTrueText(inputFocused.val() + ", " +...