非常简短的背景:
我正在使用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选项卡有多个选项卡,它们都具有相同的形式。这意味着在所有选项卡中有几个不同的输入字段都具有相同的名称/ id / class。
我知道这是ID属性的问题,但不确定是否同样适用于名称属性。
我已经尝试了很多不同的Javascript和Jquery代码片段,我再也想不到了。
突破......但仍然是一个问题
$("[name='rolehidden']").val(sValue);
刚刚突破。此代码确实有效...但仅适用于<input ="text">
元素。它无法在<input ="hidden">
上工作有没有解决方法或者我应该使用CSS来隐藏文本输入框?
请帮忙
添
答案 0 :(得分:5)
“我想做的就是获取sValue并将其作为表单中隐藏字段的值。”
你试过吗?
$("[name='rolehidden']").val(sValue);
答案 1 :(得分:5)
试一下
$("[name='rolehidden']").val(sValue);
答案 2 :(得分:3)
尝试$('input[name=rolehidden]').val(sValue);
答案 3 :(得分:0)
您可以$(selector).attr(key, value);
例如:
$('input.classname').attr('value','value to set');