Текст в Javascript
Не ругайте за глупый вопрос, я новичек. Перерыл весь форум и Google.
Как писать кириллический текст в JS? Например, есть переменная:
var a = $('.function').val(),
Как вставить перед ней текст? Функция: .function |
Sylar V,
Какая задача перед Вами стоит? Ничего не понятно из вопроса. |
Sylar V,
var a = 'абракадабра'+$('.function').val(),
|
Alexander Belov, Может плохо объяснил, нужно отправить текст, вместе с переменной. Как-то так.
|
рони, А если в массиве несколько функций и каждой нужно по абракадабре?)
|
Sylar V,
вашей информации недостаточно |
рони, Вот пример:
var a = $('[текст1:].function1 [текст2:].function2').val(),
Это реально? |
Цитата:
|
Цитата:
http://api.jquery.com/insertbefore/ |
Я даже не знаю, как объяснить более подробно. Нужно получать текст перед каждой функцией. Может это можно реализовать правильней?
$(function(){
var a = $.map($('.function1, .function2, .function3'),function(el) {
return el.value
}) ;
alert(JSON.stringify(a)) ;
})
|
Sylar V,
return str + el.value |
рони, А можно, пожалуйста, подробнее? Может как-то можно вставить див? Мне нужно получать текст перед значением.
К примеру, чтобы приходило: Диаметр: значение (.function1)<br /> Масса: значение (.function2)<br /> |
Sylar V,
(непереводимый испанский мат) ... по русски напишите на английском, чего хотите сделать. например html до и после |
рони,
Вот JS:
$(function(){
var a = $.map($('.function1, .function2, .function3'),function(el) {
return el.value
}) ;
alert(JSON.stringify(a)) ;
})
Сейчас данные приходят вот так: 1,2,3 Нужно, чтобы приходили вот так: Диаметр: 1 Масса: 2 Размер: 3 Я уже не знаю, как объяснить... |
Цитата:
А откуда эти данные берутся? Там, где они находятся, по идее, должны быть и соответствующие слова. Иначе кто знает, что значит какое число? |
Цитата:
|
Sylar V,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function() {
var a = ["Диаметр","Масса","Размер"].reduce(function(b, a, c) {
b[a] = document.querySelector(".function" + (c + 1)).value;
return b
}, {});
alert(JSON.stringify(a))
})
</script>
</head>
<body>
<input type="text" class="function1" value="1">
<input type="text" class="function2" value="2">
<input type="text" class="function3" value="3">
</body>
</html>
|
Sylar V,
document.querySelector([".diametr",".massa",".razmer"][c]).value; |
рони, Большое спасибо! Все работает, но такой вопрос, стоит мне вписать еще классы, как код не работает. Как сделать 5 значений, чтобы каждое было на новой строчке?
|
Sylar V,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function () {
var arr = [];
$('[class^="function"]').each(function () {
arr.push( $(this).attr('name'));
});
var a = arr.reduce(function (b, a, c) {
b[a] = document.querySelector(".function" + (c + 1)).value;
return b
}, {});
alert(JSON.stringify(a))
});
</script>
</head>
<body>
<input type="text" class="function1" name="Диаметр" value="1">
<input type="text" class="function2" name="Масса" value="2">
<input type="text" class="function3" name="Размер" value="3">
<input type="text" class="function4" name="Материал" value="4">
<input type="text" class="function5" name="Цвет" value="5">
</body>
</html>
|
Dilettante_Pro,
зачем масло масляным делать? |
на всякий случай
http://api.jquery.com/serialize/ |
рони,
Цитата:
Написал отдельно кусок формирования массива по названиям, чтобы было видно отличие от предыдущего варианта. Зато так названия живут вместе со значениями, и не надо их искусственно скрещивать |
Dilettante_Pro,
это оказывается я замаслил, а ты подхватил :) строки 9 и 10, ready в ready, одна лишняя... а во своём не видим и бревна :lol: |
рони,
Это не замаслил, а глаз замылился - на своем коде так часто бывает:write: |
Dilettante_Pro, так, и как в итоге написать правильно?)
|
Цитата:
|
Еще вариант
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function () {
var a = {};
$("form").serializeArray().map(function (x) { a[x.name] = x.value; });
alert(JSON.stringify(a))
});
</script>
</head>
<body>
<form>
<input type="text" class="function1" name="Диаметр" value="1">
<input type="text" class="function2" name="Масса" value="2">
<input type="text" class="function3" name="Размер" value="3">
<input type="text" class="function4" name="Материал" value="4">
<input type="text" class="function5" name="Цвет" value="5">
</form>
</body>
</html>
|
Dilettante_Pro,
Понимаете, решения отличные. Но классы у меня называются .diametr .massa .ramer. Как написать код в этом случае? |
Sylar V,
Последний вариант - пост №28 - работает без использования классов в инпутах. Только инпуты должны быть включены в форму. |
Dilettante_Pro,
У меня в верстке:
<form>
<div>
<div>
<input type="text" class="function1" name="Диаметр" value="1">
<input type="text" class="function2" name="Масса" value="2">
<input type="text" class="function3" name="Размер" value="3">
<input type="text" class="function4" name="Материал" value="4">
<input type="text" class="function5" name="Цвет" value="5">
</div>
</div>
</form>
В итоге приходит только первый инпут без name. Форму в форме делать нельзя, сверстать иначе тоже. :( |
Sylar V,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function () {
var a = {};
$("form").serializeArray().map(function (x) { a[x.name] = x.value; });
alert(JSON.stringify(a))
});
</script>
</head>
<body>
<form>
<div>
<div>
<input type="text" class="function1" name="Диаметр" value="1">
<input type="text" class="function2" name="Масса" value="2">
<input type="text" class="function3" name="Размер" value="3">
<input type="text" class="function4" name="Материал" value="4">
<input type="text" class="function5" name="Цвет" value="5">
</div>
</div>
</form>
</body>
</html>
|
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function () {
var a = {};
$("form").serializeArray().map(function (x) { a[x.name] = x.value; });
alert(JSON.stringify(a))
});
</script>
</head>
<body>
<form>
<div>
<div>
<input type="text" class="diametr" name="Диаметр" value="123">
<input type="text" class="massa" name="Масса" value="123">
<input type="text" class="razmer" name="Размер" value="123">
<input type="text" class="material" name="Материал" value="123">
<input type="text" class="cvet" name="Цвет" value="123">
</div>
</div>
</form>
</body>
</html>
Вставил в JS:
var a = {};
$("form").serializeArray().map(function (x) { a[x.name] = x.value;
});
$.ajax({
type: 'POST',
url: '/order.php?t=' + new Date().getTime(),
dataType: 'json',
data: {
TOVAR: a
});
В CRM приходит только диаметр, без name. Понимаю, что тут работает. На почту зато приходят все данные, тоже без name. Уже не знаю, что делать. |
Dilettante_Pro,
Код работает. Данные теряются у меня. Нельзя ли сделать form индивидуальной? А то у меня в коде таких конструкций много. Странно то, что вот этот код работает без проблем:
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function() {
var a = ["Диаметр","Масса","Размер"].reduce(function(b, a, c) {
b[a] = document.querySelector([".diametr",".massa",".razmer"][c]).value;
return b
}, {});
alert(JSON.stringify(a))
})
</script>
</head>
<body>
<input type="text" class="diametr" value="1">
<input type="text" class="massa" value="2">
<input type="text" class="razmer" value="3">
</body>
</html>
Может как-то можно его увеличить еще на два значения? |
| Часовой пояс GMT +3, время: 19:38. |