2011-06-03 89 views
1

我在那裏有一個頁面。我有複選框的數量。我希望用戶選擇不超過三個,一個複選框的值爲「不感興趣」,如果用戶點擊這個所有其他複選框必須禁用。爲此,我試過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 variable.That映射與數據庫列名和用戶是我的表名。 幫我做到這一點,並建議我禁用複選框,當用戶點擊「NOT INTERSTED」。而且它不是鐵路3.0

感謝朋友考慮.........

+1

這有一點用Ruby做。這完全是JS。 – cwallenpoole 2011-06-03 11:29:02

回答

1

使用此語法document.form1.user[portal_choice],你告訴Javascript你想要一個名爲'form1'的窗體,並從該窗體獲取名爲'user'的元素,然後查看包含在(javascript)變量'portal_choice'中的索引。該變量未在您的函數中定義。

我對Ruby並不熟悉,但從一些快速閱讀中,它看起來像你可以直接在html中引用Ruby變量,但不能在Javascript中引用。我認爲你必須與<%= %>把它包起來,像這樣:

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

不過,我不明白你爲什麼會在這裏使用一個Ruby變量。你只是想遍歷所有的複選框,對吧?我不認爲複選框元素是有史以來2維數組,如

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; 
       } 
      } 
     } 

入住這fiddle

相關問題