#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть текстовая область, в которую я буду вставлять некоторые данные, например, вот так
01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019
И когда я нажимаю отправить весь текст внутри текстового поля, чтобы выдать вывод ниже примерно такого
06/01/2019 <!-- dd/mm/yyyy -->
07/01/2019
08/01/2019
08/01/2019
10/01/2019
Я справился с этим на python, используя этот код
filepath = ('date.txt')
f = open("newdate.txt", "w ")
new = []
with open(filepath) as fp:
for line in fp:
line = line.strip('n')
new = line.split("-")
f.write(new[1] "/" new[2] "/" new[0] "n")
print(new[1] "/" new[2] "/" new[0] "n")
f.close()
Я новичок в JavaScript и jQuery, поэтому мне интересно, как я могу добиться этого в jQuery
Комментарии:
1. вы бы не стали использовать jquery, поскольку в нем нет функций обработки строк, кроме тех, которые доступны в javascript … кроме того, в javascript вы не можете открыть файл и т.д., Поэтому вам нужно подумать, как вы можете получить содержимое текстовой области … подсказка: это
value
то, что вы хотите — тогда все, что вам нужно сделать, это изучить некоторые базовые javascript, чтобы попытаться написать код2. Вы можете принять один ответ (если это вам поможет), нажав на большую серую кнопку проверки с левой стороны. При желании вы можете добавить 10 баллов любому автору любого хорошего ответа, щелкнув верхний серый треугольник
Ответ №1:
Вы можете зарегистрировать onsubmit
прослушиватель в своей форме, а затем в обработчике выполнить вашу логику синтаксического анализа значения текстовой области.
Следующий фрагмент является примером того, как это сделать:
// Register 'submit' event listener
document.querySelector('#form')
.addEventListener('submit', e => {
// Prevent default action so that page doesn't refresh
e.preventDefault();
// Get the text from the textarea
let text = document.querySelector('#text').value;
// Split the lines
let converted = text.split('n')
// Convert each line
.map(str => {
// Extract the date parts
let [mm, dd, yyyy] = str.split('-');
// Return the desired format by joining the date parts with /
return [dd, mm, yyyy].join('/');
});
// Print result to console
console.log(converted);
});
<form id="form">
<textarea id="text"></textarea>
<button type="submit">submit</button>
</form>
Ответ №2:
используйте следующее регулярное выражение-замените значение textarea
value.replace(/(-)(?=d)/g,'/')
(-)(?=d)
Найдет все тире ‘-‘, предшествующие числу
function submit() {
let r=data.value.replace(/(-)(?=d)/g,'/');
console.log(r);
}
textarea { width: 200px; height: 100px; }
button { display: block }
<textarea id="data">
01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019
</textarea>
<button onclick=submit()>Submit</button>
Ответ №3:
На самом деле вам не нужен никакой jQuery для этого, должно сработать лишь небольшое регулярное выражение.
const datesArr = [
'01-06-2019',
'01-07-2019',
'01-08-2019',
'01-09-2019',
'01-10-2019',
]
const newDates = []
const regex = /(dd)-(dd)-(d{4})/
for (let date of datesArr) {
newDates.push(date.replace(regex, '$2/$1/$3'))
}
console.log(newDates)
Ответ №4:
function convertToFormat(data) {
var _dataSplit = data.split('rn');
var _length = _dataSplit.length;
var _finalData = '';
for (var i=0;i<_length;i ) {
var _dataDSplit = _dataSplit[i].split('-');
_finalData = _dataDSplit[1] '/' _dataDSplit[0] '/' _dataDSplit[2] 'rn';
}
return _finalData;
}
Ответ №5:
Вы можете получить значение текстовой области, нажав отправить, как показано в приведенном ниже фрагменте. Вы можете выполнять свои манипуляции с датой (изучите некоторые манипуляции со строками для форматирования. См. — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String )
function formatText() {
var textAreaValue = $('#my-text').val();
// Do the necessary formatting here
var formattedText = 'test';
$('#my-text').val(formattedText);
}
.btn {
display: block;
width: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<textarea id="my-text"></textarea>
<button class="btn" onClick="formatText()">Submit</button>
</div>
Ответ №6:
Попробуйте использовать замену регулярных выражений. Демонстрация регулярных выражений здесь
let dates = document.getElementById('dates');
console.log(dates.value.replace(/(d{2})-(d{2})-(d{4})/g, '$2/$1/$3'))
<textarea id="dates" rows="6" cols="30">
01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019
</textarea>