#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;
}
}
}
Проверьте эту скрипку