非常简短的背景:设置隐藏字段的值,以JavaScript变量
我使用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属性的问题,但不知道是否同样适用于名称属性。
我已经尝试了很多不同的Javascript和JQuery的代码片段,我再也想不到了。
突破......但仍然是一个问题
$("[name='rolehidden']").val(sValue);
刚刚有了一个突破。此代码确实有效......但仅限于<input ="text">
元素。它无法在<input ="hidden">
上工作是否有解决方法,或者我应该使用CSS来隐藏文本输入框?
请帮
添
我应该把这个放在哪里?我必须在提交按钮上触发这个吗?对不起,我需要多一点帮助 – Tim 2010-01-14 04:47:33
把它放在你的'findValue()'函数结束。这就是'sValue'创建的地方,据我所知。 – Sampson 2010-01-14 04:54:00
你好, 是的,我曾经尝试这样做,只是试图再次但是它不工作。 请注意,我还补充说,可能是至关重要的这个工作的详细信息... 我还要提到的是JQuery的标签有多个选项卡都具有相同的形式。这意味着在所有选项卡中有几个不同的输入字段都具有相同的名称/标识/类。 我知道这是ID属性的问题,但不能肯定是否同样适用于name属性。 – Tim 2010-01-14 05:23:36