Да, использование двоеточия (:) в значении атрибута `data-*` в HTML является валидным. Атрибуты `data-*` предназначены для хранения дополнительной информации на элементах HTML, которую не предусмотрено хранить стандартными атрибутами и которая доступна через JavaScript.
Ваш пример с `data-user="name:age"` вполне допустим и не должен по своей сути нарушать функционирование JavaScript. Вот простой пример использования двоеточия в значении атрибута `data-*`:
```html
<div id="myDiv" data-user="name:John;age:30"></div>
```
И JavaScript, который бы корректно считал эти данные:
```javascript
var myDiv = document.getElementById('myDiv');
var userData = myDiv.getAttribute('data-user');
// Теперь userData = "name:John;age:30"
// Можно разбить строку на части по разделителю, в данном случае двоеточие и точка с запятой
// эти строки можно дальше анализировать или использовать по назначению
var userDataParts = userData.split(';');
for (var i = 0; i < userDataParts.length; i++) {
var [key, value] = userDataParts[i].split(':');
console.log('Key:', key, 'Value:', value);
}
// Вывод:
// Key: name Value: John
// Key: age Value: 30
```
Если ваш JavaScript-сценарий перестаёт работать после добавления двоеточия в значение атрибута `data-*`, то, скорее всего, проблема кроется в логике обработки данных из этого атрибута, а не в использовании двоеточия как такового. Возможно, сценарий не ожидает видеть двоеточие и не умеет правильно разбирать такую строку.
Вам стоит проверить, корректно ли написана функция обработки значений атрибута `data-*`, и если это необходимо, модифицировать её так, чтобы она корректно обрабатывала двоеточия или другие специальные символы, которые вы планируете использовать.