2016-02-15 1 views
0

Мне нужна помощь в добавлении массива значений ключей для этого кода jQuery, с которым я столкнулся. Код делает именно то, что мне нужно, за исключением того, что мне нужно несколько входов, в отличие от одного ввода, который он предоставляет.Как использовать массив значений ключа jquery?

jQuery("#btn").on('click', function() { 
    var caretPos = document.getElementById("txt").selectionStart; 
    var textAreaTxt = jQuery("#txt").val(); 
    var txtToAdd = "stuff"; 
    jQuery("#txt").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos)); 
}); 
<textarea id="txt" rows="15" cols="70">There is some text here.</textarea> 
<input type="button" id="btn" value="OK" /> 

См here.

Я хочу иметь массив, такие как:

OK => stuff, 
YES => more stuff, 
NO => no stuff 

Я не знаком с JQuery, пожалуйста, помогите.

+0

он намеревается три кнопки с различными значениями? – RomanPerekhrest

+0

@RomanPrekhrest да thats correct – Nxlevel

ответ

1

Javascript не имеет массивов со строковыми ключами, только с индексированными массивами. Но вы можете использовать объект для этой цели.
Измените код, как показано ниже:

<textarea id="txt" rows="15" cols="70">There is some text here.</textarea> 
<input type="button" class="btn" value="OK" /> 
<input type="button" class="btn" value="NO" /> 
<input type="button" class="btn" value="YES" /> 

$(".btn").on('click', function() { 
    var caretPos = document.getElementById("txt").selectionStart; 
    var textAreaTxt = $("#txt").val(); 
    var txtSet = {'ok' : 'stuff', 'yes' : 'more stuff', 'no' : 'no stuff'}; 
    var txtToAdd = txtSet[$(this).val().toLowerCase()]; 
    $("#txt").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos)); 
}); 

Теперь вы можете легко расширить объект txtSet из-за множества возможных кнопок.

http://jsfiddle.net/3pg5zmqg/