2009-10-06 5 views
0

사용자가 다중 선택 필드에서 최대 X 개까지 옵션을 선택할 수있는 양식이 있습니다. 사용자가 X 항목보다 큰 항목을 선택하면 마지막으로 선택한 항목의 프롬프트와 선택이 취소됩니다.복수 선택 값 오류

이전의 다중 선택으로 경고 메시지가 표시되면 문제가 발생합니다.

양식에 4 개의 다중 선택이 있으므로 세 번째 다중 선택 또는 최대 숫자에 이미 도달 한 경우 이전 다중 선택으로 이미 도달 한 경우 다음 선택에 대한 오류를 던집니다. 사용자가 올바른 번호를 선택합니다.

다음은 코드 단편입니다. 페이지의 선택의 나머지는 동일한 방식으로 구축하지만 서로 다른 이름을 사용하고 있습니다 : 자바 스크립트가 경고 여기

<select multiple name="seasons[]" size="6" id="seasons" onChange="countSelected(this,5)"> 
<option value=0>Hold CTRL to select more than one</option> 
<? 
    $ftw = mysql_query("SELECT s.seasonId, s.type FROM seasons s ORDER BY s.seasonId ASC"); 
    while ($line = mysql_fetch_array($ftw)) { 
    $queried = mysql_query("SELECT seasonId FROM selectedSeason where seasonId = '$line[0]' AND id = '$objItem->itemId'"); 
     if(mysql_fetch_row($queried)) 
     echo "<option selected value=\"$line[0]\">". $line[1] ."</option>"; 
     else 
     echo "<option value=\"$line[0]\">". $line[1] ."</option>"; 
    } 
?> 
</select> 

을 :

var selectedOptions = []; 

function countSelected(select,maxNumber){ 
    for(var i=0; i<select.options.length; i++){ 
    if(select.options[i].selected && !new RegExp(i,'g').test(selectedOptions.toString())){ 
     selectedOptions.push(i); 
    } 

    if(!select.options[i].selected && new RegExp(i,'g').test(selectedOptions.toString())){ 
     selectedOptions = selectedOptions.sort(function(a,b){return a-b}); 
     for(var j=0; j<selectedOptions.length; j++){ 
     if(selectedOptions[j] == i){ 
      selectedOptions.splice(j,1); 
     } 
     } 
    } 

    if(selectedOptions.length > maxNumber){ 
     var throwAlert = true; 
     select.options[i].selected = false; 
     selectedOptions.pop(); 
    } 
    } 

    if(throwAlert == true){ 
     alert('You may only choose '+maxNumber+' options!!'); 
     document.body.focus(); 
    } 
} 

계절이 계절 [] 그래서 게시 할 수 있어야합니다 PHP에 여러 값. 나는 자바 스크립트로 데이터를 게시하거나 검색하는 데 아무런 문제가 없다. 오류는 IE, FF 및 Safari에서 발생하지만 Chrome에서는 발생하지 않습니다.

모든 아이디어는 매우 중요합니다.

답변

0

내가 u는 그 라인에

selectedOptions[0][0] /// indicating to first select box option 1 
selectedOptions[0][1] /// indicating to first select box option 2 

뭔가 일을해야 라인에 다차원 배열 뭔가에 selectedOptions을해야 같아요.

편집 : 원하는 경우 신속하고 더러운 방법으로 selectedOptions1 [] selectedOptions2 [] 등을 사용하고 if else 문을 사용하여 js 기능의 시작 부분에서 올바른 배열로 작업하십시오.