Текст в 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, время: 20:15. |