Ограничение количества флажков, выбранных пользователем

#javascript #ruby-on-rails

#javascript #ruby-on-rails

Вопрос:

у меня там есть страница.у меня есть количество флажков. я хочу, чтобы пользователь выбирал не более трех, и один флажок имеет значение «НЕ интересует», если пользователь нажмет на это, все остальные флажки должны быть отключены. для этого я попробовал javascript. это то, что я пробовал

 function chkcontrol(j) {
            var total = 0;
            for (var i = 0; i < document.form1.user[portal_choice].length; i  ) {
                if (document.form1.user[portal_choice][i].checked) {
                    total = total   1;
                }
                if (total > 3) {
                    alert("Please Select only three")
                    document.form1.user[portal_choice][j].checked = false;
                    return false;
                }
            }
        }
  

я получаю ошибку в переменной portal_choice.Это сопоставляется с именем столбца базы данных, а user — это имя моей таблицы.
помогите мне сделать это и предложите мне отключить флажок, когда пользователь нажимает «НЕ ИНТЕРЕСУЕТ». и это не rail 3.0

спасибо, приятель, за внимание………

Комментарии:

1. Это имеет мало общего с Ruby. Это полностью JS.

Ответ №1:

Используя этот синтаксис document.form1.user[portal_choice] , вы сообщаете Javascript, что хотите, чтобы форма называлась ‘form1’, и из этой формы получаете элементы с именем ‘user’ и просматриваете тот, у которого индекс содержится в переменной portal_choice (javascript) ‘portal_choice’. Эта переменная не определена в вашей функции.

Я не знаком с Ruby, но из некоторого быстрого чтения кажется, что вы можете ссылаться на переменные Ruby непосредственно в html, но не в Javascript. Я думаю, вам нужно обернуть это с помощью <%= %> вот так:

 document.form1.user[<%= portal_choice %>].length
  

Однако я не понимаю, зачем вам использовать здесь переменную Ruby. Вы просто хотите перебрать все флажки, верно? Я не думаю, что элементы checkbox когда-либо являются двумерными массивами, как в

 document.form1.user[portal_choice][i]
  

Я думаю, вы действительно просто хотите это сделать:

 function chkcontrol(j) {
            var total = 0;
            for (var i = 0; i < document.form1.user.length; i  ) {
                if (document.form1.user[i].checked) {
                    total = total   1;
                }
                if (total > 3) {
                    alert("Please Select only three")
                    document.form1.user[j].checked = false;
                    return false;
                }
            }
        }
  

Проверьте эту скрипку