Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   JS изменялся ли элемент формы Select (https://javascript.ru/forum/dom-window/64186-js-izmenyalsya-li-ehlement-formy-select.html)

drno-reg 25.07.2016 11:00

JS изменялся ли элемент формы Select
 
Здравствуйте.

Необходимо на форме проверить изменял ли пользователь элемент формы типа Select.

Как это сделать?

p.s.
пробовал так
<select NAME="TEXT_FREQUENCY_TYPE_${row.ID}">
                            <option SELECTED VALUE="${row.FREQUENCY_TYPE}">${row.FREQUENCY_TYPE}</option>
                        </select>



<script>
    function GetValue () {
        var result = [];
        [].forEach.call(document.querySelector('form').elements, function (el) {
            if (['checkbox', 'radio', 'button', 'submit'].indexOf(el.type) === -1 || el.checked)
            {
                var defValue = el.defaultValue;
                var currvalue = el.value;
                if (defValue == currvalue) {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение не изменилось");
                } else {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение изменилось с " + defValue +
                              "\n  на " + currvalue);
                }
</script>



результат:

TEXT_FREQUENCY_TYPE_1 :: Минут :: Значение изменилось с undefined на Минут

рони 25.07.2016 14:11

drno-reg,
если изначально selectedIndex=0
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>

<body>
<form action="http://">
<select name="" id="" onchange=""><option>1</option><option>2</option></select>
<input name="text"><input name="data">
</form>

<script>
    function GetValue () {
        var result = [];
        [].forEach.call(document.querySelector('form').elements, function (el) {
            if (['checkbox', 'radio', 'button', 'submit'].indexOf(el.type) === -1 || el.checked)
            {
                var defValue = el.defaultValue ;
                var currvalue = el.value;
                var index = el.selectedIndex;
                if (index) defValue = el.options[0].value;
                if (defValue == currvalue || index === 0) {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение не изменилось");
                } else {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение изменилось с " + defValue +
                              "\n  на " + currvalue);
                } }

                })
       alert(result)

                }

window.setTimeout(GetValue, 5000)
</script>
</body>
</html>

drno-reg 25.07.2016 14:53

Большое спасибо.
Именно то, что нужно.
Я начинающий пользователь информационного ресурса http://javascript.ru/.
Есть ли возможность отметить Ваш ответ решением вопроса?

рони 25.07.2016 15:06

drno-reg,
можно только карму изменить под ником в сообщении где нужный вам код


Часовой пояс GMT +3, время: 09:20.