2011-12-28 2 views
0

Я пытаюсь создать вариант HTML выбрать массив вроде следующегоКак извлечь информацию из опции выбора массива html?

<select name="tablename"> 
    <option value="['one','two','three']">Option one</option> 
</select>  

В JavaScript

var myArray = new Array(); 

myArray[0] ="one"; 
myArray[1] ="two"; 
myArray[2] = "three"; 

option.value=myArray; 

, но когда я пытаюсь получить значение из него с помощью

var myArray2 = new Array(); 
myArray2 = $('select[name="tablename"]').val(); 
val=myArray2[0]; 

его ничего не вернул ... все пошло не так

ответ

2

Значение опции c только строка магазина. Вы можете хранить массив в некоторой строчной форме и анализировать его в JS. Например:

<select name="tablename"> 
    <option value="['one','two','three']">Option one</option> 
</select> 

// JS 
var myArray2; 
myArray2 = $('select[name="tablename"]').val(); 
myArray2 = eval(myArray2); 
alert(myArray2[0]); 

Работа демо: http://jsfiddle.net/kZape/

0

Во-первых, изменить разметку.

<option value="[one,two,three]">Option one</option> 

Получить значение тега опции.

v = $('option').val(); 

'v' будет "[один, два, три]" в строковом объекте.

v = v.slice(1, -1); 

то, что это "один, два, три" Теперь разделить его,

yourArray = v.split(','); 

, наконец, вы получите yourArray [ "один", "два", "три"]
:)

1

Я не уверен, что именно вы хотите сделать, но если вы хотите сохранить массив ["one","two","three"] в один OPTION, а затем прочитать этот массив из JavaScript, вы можете выполнить следующие действия:

HTML:

<select name="tablename"> 
    <!-- IMPORTANT COMMENT: use single quotes for value='' and double quoutes for values in array --> 
    <option value='["one","two","three"]'>Option one</option> 
</select> 

JQuery:

// reading array from OPTION 
var myArray2 = jQuery.parseJSON($('select[name="tablename"]').val()); 
// myArray2 now is an javascript Array 
console.info(myArray2); 

UPDATE:

Вы можете использовать собственные Javascript JSON методы объекта для преобразования массива в строку, а затем сохранить в HTML OPTION или ВЫБРАТЬ стоимость; или преобразовать значение из OPTION или ВЫБРАТЬ в массив (, если вам не нужно поддерживать IE версии меньше 8):

// store Array into OPTION value 
myOption.value = JSON.stringify(["one","two","three"]); 

// read Array from SELECT value from your example 
var newArray = JSON.parse($('select[name="tablename"]').val()); 

Подробнее aboute JSON.parse() и JSON.stringify в MSDN: http://msdn.microsoft.com/en-us/library/cc836458%28v=VS.94%29.aspx и в MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON

Смежные вопросы