Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Получить текст лейбы. Как? / 15 сообщений из 15, страница 1 из 1
18.11.2017, 01:02
    #39555382
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Получить текст лейбы. Как?

Утро.

Есть радиокнопка завернутая в лейбу. На клик кнопки нужно получить текст лейбы. Взял готовый пример на сайте разработчика, но у меня не работает. Вылетает вот на этой строке "var category = $(item)[0].labels[0].innerText;"

Error: Unable to get property '0' of undefined or null reference

Я вообще этот код плохо читаю. Может, кто объяснит - что это и почему вылетает у меня. На сайте разработчика все работает. Причем я сделал демку один в один.

https://docs.telerik.com/kendo-ui/knowledge-base/radio-buttons-custom-editor

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
 function templateFunction(dataItem) {
            var cell = "";
            var category = dataItem.CategoryID - 1;

            for (var i = 0; i < categories.length; i++) {
                var item = "";

                item += "<label>"
                if (category === i) {
                    item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);' checked=checked />";
                } else {
                    item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);'/>";
                }
                item += categories[i].text;
                item += "</label>"
                item += "</br>";

                cell += item;
            }
            return cell;
        };

        function setDataItem(item) {
            var grid = $("#grid").data("kendoGrid");
            var row = $(item).closest("tr");
            var dataItem = grid.dataItem(row);
            var category = $(item)[0].labels[0].innerText;
            var ID;

            for (var i = 0; i < categories.length; i++) {
                if (categories[i].text === category) {
                    ID = i;
                    break;
                }
            };

            dataItem.set("CategoryID", ID + 1);
        };

...
Рейтинг: 0 / 0
20.11.2017, 08:29
    #39555926
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic HunterМожет, кто объяснит - что это и почему вылетает у меня. На сайте разработчика все работает. Причем я сделал демку один в один.
Значит не "один в один"...
...
Рейтинг: 0 / 0
20.11.2017, 08:30
    #39555927
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic HunterЕсть радиокнопка завернутая в лейбу. На клик кнопки нужно получить текст лейбы.
Где тестовый пример той разметки?
...
Рейтинг: 0 / 0
20.11.2017, 16:06
    #39556284
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic Hunter,

Код: javascript
1.
var category = $(item)[0].labels[0].innerText



jquery не знает что такое innerText
...
Рейтинг: 0 / 0
21.11.2017, 08:31
    #39556536
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Areostarjquery не знает что такое innerText
А про labels знает?
...
Рейтинг: 0 / 0
28.11.2017, 21:36
    #39560881
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
krvsaRelic HunterЕсть радиокнопка завернутая в лейбу. На клик кнопки нужно получить текст лейбы.
Где тестовый пример той разметки?

И кнопка там еще естть "Open in Dojo", типа Fiddle. Ну как же так товаризчи.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
<script src="https://demos.telerik.com/kendo-ui/content/shared/js/products.js" type="text/javascript"></script>
<div id="example">
    <div id="grid"></div>

    <script>
        var categories = [{
            "value": 1,
            "text": "Beverages"
        }, {
            "value": 2,
            "text": "Condiments"
        }, {
            "value": 3,
            "text": "Confections"
        }, {
            "value": 4,
            "text": "Dairy Products"
        }, {
            "value": 5,
            "text": "Grains/Cereals"
        }, {
            "value": 6,
            "text": "Meat/Poultry"
        }, {
            "value": 7,
            "text": "Produce"
        }, {
            "value": 8,
            "text": "Seafood"
        }];

        $(document).ready(function() {
            var dataSource = new kendo.data.DataSource({
                pageSize: 20,
                data: products,
                autoSync: true,
                schema: {
                    model: {
                        id: "ProductID",
                        fields: {
                            ProductID: {
                                editable: false,
                                nullable: true
                            },
                            ProductName: {
                                validation: {
                                    required: true
                                }
                            },
                            CategoryID: {
                                editable: true,
                                field: "CategoryID",
                                type: "number",
                                defaultValue: 1
                            },
                            UnitPrice: {
                                type: "number",
                                validation: {
                                    required: true,
                                    min: 1
                                }
                            }
                        }
                    }
                }
            });

            $("#grid").kendoGrid({
                dataSource: dataSource,
                filterable: true,
                groupable: true,
                pageable: true,
                height: 540,
                toolbar: ["create"],
                columns: [{
                        field: "ProductName",
                        title: "Product Name"
                    },
                    {
                        field: "CategoryID",
                        width: "200px",
                        title: "Category",
                        template: templateFunction,
                        editable: function() {
                            return false
                        }
                    },
                    {
                        field: "UnitPrice",
                        title: "Unit Price",
                        format: "{0:c}",
                        width: "200px"
                    },
                    {
                        command: "destroy",
                        title: " ",
                        width: "150px"
                    }
                ],
                editable: true
            });
        });

        function templateFunction(dataItem) {
            var cell = "";
            var category = dataItem.CategoryID - 1;

            for (var i = 0; i < categories.length; i++) {
                var item = "";

                item += "<label>"
                if (category === i) {
                    item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);' checked=checked />";
                } else {
                    item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);'/>";
                }
                item += categories[i].text;
                item += "</label>"
                item += "</br>";

                cell += item;
            }
            return cell;
        };

        function setDataItem(item) {
            var grid = $("#grid").data("kendoGrid");
            var row = $(item).closest("tr");
            var dataItem = grid.dataItem(row);
            var category = $(item)[0].labels[0].innerText;
            var ID;

            for (var i = 0; i < categories.length; i++) {
                if (categories[i].text === category) {
                    ID = i;
                    break;
                }
            };

            dataItem.set("CategoryID", ID + 1);
        };
    </script>
</div>

...
Рейтинг: 0 / 0
28.11.2017, 21:39
    #39560883
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
...
Рейтинг: 0 / 0
29.11.2017, 02:44
    #39560977
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
krvsaRelic HunterМожет, кто объяснит - что это и почему вылетает у меня. На сайте разработчика все работает. Причем я сделал демку один в один.
Значит не "один в один"...Выяснилось, что в FF и Chrome - работает . Но на моем кровавом энтерпрайзе IE, там - не работает . Нужно как-то переписать эту строчку на IE. Как?

Код: html
1.
var category = $(item)[0].labels[0].innerText;
...
Рейтинг: 0 / 0
29.11.2017, 08:08
    #39561012
cherepaxa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
...
Рейтинг: 0 / 0
29.11.2017, 08:30
    #39561017
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic HunterНу как же так товаризчи.
У меня твой пример не работает...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<script src="https://demos.telerik.com/kendo-ui/content/shared/js/products.js" type="text/javascript"></script>
<div id="example">
    <div id="grid"></div>
</div>
<script>
	var categories = [{
		"value": 1,
		"text": "Beverages"
	}, {
		"value": 2,
		"text": "Condiments"
	}, {
		"value": 3,
		"text": "Confections"
	}, {
		"value": 4,
		"text": "Dairy Products"
	}, {
		"value": 5,
		"text": "Grains/Cereals"
	}, {
		"value": 6,
		"text": "Meat/Poultry"
	}, {
		"value": 7,
		"text": "Produce"
	}, {
		"value": 8,
		"text": "Seafood"
	}];
	$(function() {
		var dataSource = new kendo.data.DataSource({
			pageSize: 20,
			data: products,
			autoSync: true,
			schema: {
				model: {
					id: "ProductID",
					fields: {
						ProductID: {
							editable: false,
							nullable: true
						},
						ProductName: {
							validation: {
								required: true
							}
						},
						CategoryID: {
							editable: true,
							field: "CategoryID",
							type: "number",
							defaultValue: 1
						},
						UnitPrice: {
							type: "number",
							validation: {
								required: true,
								min: 1
							}
						}
					}
				}
			}
		});
		$("#grid").kendoGrid({
			dataSource: dataSource,
			filterable: true,
			groupable: true,
			pageable: true,
			height: 540,
			toolbar: ["create"],
			columns: [{
					field: "ProductName",
					title: "Product Name"
				},
				{
					field: "CategoryID",
					width: "200px",
					title: "Category",
					template: templateFunction,
					editable: function() {
						return false
					}
				},
				{
					field: "UnitPrice",
					title: "Unit Price",
					format: "{0:c}",
					width: "200px"
				},
				{
					command: "destroy",
					title: " ",
					width: "150px"
				}
			],
			editable: true
		});
	});
	function templateFunction(dataItem) {
		var cell = "";
		var category = dataItem.CategoryID - 1;
		for (var i = 0; i < categories.length; i++) {
			var item = "";
			item += "<label>"
			if (category === i) {
				item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);' checked=checked />";
			} else {
				item += "<input type='radio' name='" + dataItem.uid + "' onclick='setDataItem(this);'/>";
			}
			item += categories[i].text;
			item += "</label>"
			item += "</br>";
			cell += item;
		}
		return cell;
	};
	function setDataItem(item) {
		var grid = $("#grid").data("kendoGrid");
		var row = $(item).closest("tr");
		var dataItem = grid.dataItem(row);
		var category = $(item)[0].labels[0].innerText;
		var ID;
		for (var i = 0; i < categories.length; i++) {
			if (categories[i].text === category) {
				ID = i;
				break;
			}
		};
		dataItem.set("CategoryID", ID + 1);
	};
</script>
</body>
</html>


И для демонстрации твоей проблемы он явно великоват.
...
Рейтинг: 0 / 0
29.11.2017, 10:52
    #39561110
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
OFFTOPICКакая-то адовая компонента сплошь из говнокода и костылей. ТС, переходи на VUE/REACT.

Код: javascript
1.
var category = $( item ).closest( 'label' )[0].innerText
...
Рейтинг: 0 / 0
29.11.2017, 19:02
    #39561568
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
cherepaxa https://stackoverflow.com/questions/19228839/why-i-cant-get-value-of-label-with-jquery-and-javascript ну и причем тут это?
krvsaУ меня твой пример не работает...Говорит само за себя)))

ПС
Это не мой пример. И он работает:)
Руслан Дамирович var category = $( item ).closest( 'label' )[0].innerText;+ $1
...
Рейтинг: 0 / 0
30.11.2017, 10:10
    #39561776
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic HunterЭто не мой пример. И он работает:)
Просто скопируй и запусти его - там вообще ошибка. Т.е. это вообще не тестовый пример.
Особенно для задачи "как прочитать лейбл при клике на кнопку"...
...
Рейтинг: 0 / 0
30.11.2017, 19:13
    #39562189
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
krvsa,

Не морочь мне голову. Скопировал и запустил. Ошибка вылетает при нажатии на кнопку rbutton в IE, что и было сказано в первом посте. По делу есть что сказать? ))
...
Рейтинг: 0 / 0
01.12.2017, 08:47
    #39562347
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить текст лейбы. Как?
Relic HunterПо делу есть что сказать? ))
Учись делать тестовые примеры к своим проблемам, это может облегчить тебе их решение...
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Получить текст лейбы. Как? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]