Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Текст в Javascript (https://javascript.ru/forum/dom-window/62337-tekst-v-javascript.html)

Sylar V 14.04.2016 13: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. Форму в форме делать нельзя, сверстать иначе тоже. :(

Dilettante_Pro 14.04.2016 13:45

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>

Sylar V 14.04.2016 14:01

<!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.
Уже не знаю, что делать.

Sylar V 15.04.2016 04:49

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, время: 22:50.