2010-01-14 161 views
2

非常简短的背景:设置隐藏字段的值,以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来隐藏文本输入框?

请帮

回答

5

“我想要做的就是S值,使其在形式的隐藏字段的值。”

你试过了吗?

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

我应该把这个放在哪里?我必须在提交按钮上触发这个吗?对不起,我需要多一点帮助 – Tim 2010-01-14 04:47:33

+0

把它放在你的'findValue()'函数结束。这就是'sValue'创建的地方,据我所知。 – Sampson 2010-01-14 04:54:00

+0

你好, 是的,我曾经尝试这样做,只是试图再次但是它不工作。 请注意,我还补充说,可能是至关重要的这个工作的详细信息... 我还要提到的是JQuery的标签有多个选项卡都具有相同的形式。这意味着在所有选项卡中有几个不同的输入字段都具有相同的名称/标识/类。 我知道这是ID属性的问题,但不能肯定是否同样适用于name属性。 – Tim 2010-01-14 05:23:36

3

尝试$('input[name=rolehidden]').val(sValue);

+0

我应该把这个放在哪里?我必须在提交按钮上触发这个吗?对不起,我需要更多的帮助 – Tim 2010-01-14 04:43:44

+0

试过这个,但它似乎没有工作。 – Tim 2010-01-14 22:16:02

0

您可以通过$(selector).attr(key, value);

做到这一点。例如:

$('input.classname').attr('value','value to set'); 
5

尝试这个

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

好主意。这当然值得更多的解释。 – 2016-08-30 07:53:18

+0

请在回答时添加更多信息 – tarzanbappa 2016-08-30 10:56:09

相关问题