使用Jquery或Javascript将隐藏字段值设置为Javascript变量

Tim*_*Tim 2 javascript jquery setvalue jquery-autocomplete

非常简短的背景:

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

同一个文件创建选项卡,并且还有一个启动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>
Run Code Online (Sandbox Code Playgroud)

然后在实际的选项卡代码中是表单

<?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 
Run Code Online (Sandbox Code Playgroud)

我想做的就是获取sValue并使其成为表单中隐藏字段的值.

我还应该提到JQuery选项卡有多个选项卡,它们都具有相同的形式.这意味着在所有选项卡中有几个不同的输入字段都具有相同的名称/ id/class.

我知道这是ID属性的问题,但不确定是否同样适用于name属性.

我已经尝试了很多不同的Javascript和Jquery代码片段,我再也想不到了.

突破......但仍然是一个问题

$("[name='rolehidden']").val(sValue);
Run Code Online (Sandbox Code Playgroud)

刚刚突破.这段代码确实有效...但仅限于<input ="text">元素.它无法解决<input ="hidden">是否有解决方法或我应该使用CSS来隐藏文本输入框?

请帮忙

蒂姆

Sam*_*son 5

"我想做的就是获得sValue并将其作为表单中隐藏字段的值."

你有没有尝试过?

$("[name='rolehidden']").val(sValue);
Run Code Online (Sandbox Code Playgroud)


小智 5

试试这个

$("[name='rolehidden']").val(sValue);
Run Code Online (Sandbox Code Playgroud)

  • 好主意。当然值得更多解释。 (2认同)