Установите значение скрытого поля в переменную Javascript, используя Jquery или Javascript - PullRequest
2 голосов
/ 14 января 2010

Очень краткий фон:

Я использую JQuery Autocomplete для поиска значения элемента из базы данных. Затем это значение каким-то образом передается скрытому полю в той же форме, а затем вставляется в базу данных.

Что немного усложняет это, так это то, что я работаю через Jquery Ui Tabs, с которыми мне не особо было весело в прошлом.

Итак, некоторый код в файле, который создает вкладки:

<script type="text/javascript">
function findValue(li) {
    // if( li == null ) return alert("No match!");

    // if coming from an AJAX call, let's use the CityId as the value
    if( !!li.extra ) var sValue = li.extra[0];

    // otherwise, let's just display the value in the text box
    else var sValue = li.selectValue;
}

function selectItem(li) {
    findValue(li);
}

function formatItem(row) {
    return row[0];
}

function lookupAjax(){
    var oSuggest = $(".role")[0].autocompleter;

    oSuggest.findValue();

    return false;
}

function lookupLocal(){
    var oSuggest = $("#role")[0].autocompleter;

    oSuggest.findValue();

    return false;
}
</script>

Этот же файл создает вкладки, а также имеет обратный вызов, инициирующий автозаполнение Jquery

<script type="text/javascript">
        $(function() {
            $("#tabs").tabs({
             load: function(event, ui) { setTimeout( function() { $(".title").focus(); }, 500 );
                    var ac = $(".role").autocomplete(
                        "/profile/autocomplete",
                        {
                            delay:10,
                            minChars:1,
                            matchSubset:1,
                            matchContains:1,
                            cacheLength:10,
                            onItemSelect:selectItem,
                            onFindValue:findValue,
                            formatItem:formatItem,
                            autoFill:true
                        }
                    );

                    ac[0].autocompleter.findValue(); 
                    }
                });
            });
        </script>

Тогда в коде фактической вкладки есть форма

<?php   $tab_id = $this->uri->segment(4);
    $hidden = array('tab_id' => $tab_id);
    $attributes = array('name' => 'additem');
echo form_open('profile/new_item', $attributes, $hidden); ?>
<input type="hidden" value="" name="rolehidden"/>
<?php echo validation_errors(); ?>
<table width="100%" padding="0" class="add-item">
    <tr>
        <td>Title: <input class="title" type="text" name="title" value="<?php echo set_value('title'); ?>"></input></td>
        <td>Role: <input class="role" type="text" name="role" size="15"></input></td>
        <td>Year: <input type="text" name="year" size="4" maxlength="4"></input></td>
        <td align="right"><input type="submit" value="Add"></input></td>
    </tr>
</table>
</form>t 

Все, что я хочу сделать, это получить sValue и сделать его значением скрытого поля в форме.

Я должен также упомянуть, что вкладки JQuery имеют несколько вкладок, которые имеют одинаковую форму. Это означает, что на всех вкладках есть несколько разных полей ввода с одинаковым именем / идентификатором / классом.

Я знаю, что это проблема для атрибутов идентификатора, но не уверен, применимо ли это к атрибутам имени.

Я пробовал так много разных фрагментов кода Javascript и Jquery, что просто не могу больше думать.

ПРОРЫВ ... Но все еще проблема

$("[name='rolehidden']").val(sValue);

Просто был прорыв. Этот код работает ... НО только на элементе <input ="text">. Он не работает на <input ="hidden"> Есть ли обходной путь или я должен использовать CSS, чтобы скрыть поле ввода текста?

Пожалуйста, помогите

Тим

Ответы [ 4 ]

5 голосов
/ 30 августа 2016

Попробуйте это

$("[name='rolehidden']").val(sValue);
5 голосов
/ 14 января 2010

"Все, что я хочу сделать, это получить sValue и сделать его значением скрытого поля в форме."

Вы пробовали?

$("[name='rolehidden']").val(sValue);
3 голосов
/ 14 января 2010

Попробуйте $('input[name=rolehidden]').val(sValue);

0 голосов
/ 05 апреля 2012

Вы можете сделать это с помощью $(selector).attr(key, value);

Например:

$('input.classname').attr('value','value to set');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...