文本框值不会使用javascript更改

时间:2016-11-03 08:04:42

标签: javascript jquery asp.net

这些是我页面上的不同标签,单击其中一个标签会显示在页面的该部分。

<nav>
    <ul>
        <li class="tab-current"><a style="color:red" href="#section-1" class="icon-shop"><span>Home</span></a></li>
        <li><a href="#section-2" class="icon-cup" id="events"><span>Events</span></a></li>
        <li><a href="#section-3" class="icon-food" id="finance"><span>Finance</span></a></li>
        <li><a href="#section-4" class="icon-lab" id="merchandise"><span>Merchandise</span></a></li>
        <li><a href="#section-5" class="icon-truck" id="tasks"><span>Tasks</span></a></li>
        <li><a href="#section-6" class="icon-truck" id="profile"><span>Profile</span></a></li>
    </ul>
</nav>

<section id="section-2" onclick="setTabIndex(2)">
    <!-- content here -->
</section>

<asp:TextBox ID="tabu" runat="server"></asp:TextBox>
function setTabIndex(tab) {
    //store the tab number in a hidden field so you can access it in code behind
    document.getElementById("<% = HiddenField1.ClientID %>").value = tab;
    document.getElementById('tabu').value = tab;
}

文本框,用于检查更改选项卡时是否将值设置为文本框。因此,每次点击标签时,document.getElementById('tabu').value = tab;都应更改文本框值,对吧?但它没有显示在文本框中。

我做错了什么?请帮忙。感谢

2 个答案:

答案 0 :(得分:2)

当您使用runat="server" Web窗体控件时,ASP.Net将(恼人地)在运行时更改客户端id。这就是为什么JS代码的前一行使用服务器控件的ClientID属性 - 这与您需要的技术相同。试试这个:

function setTabIndex(tab) {
    document.getElementById("<%= HiddenField1.ClientID %>").value = tab;
    document.getElementById("<%= tabu.ClientID %>").value = tab;
}

答案 1 :(得分:0)

我认为服务器控件中的客户端ID也不同。

您可以在浏览器中使用开发者工具查看文本框的确切ID。

尝试使用,

Javascript中的

document.getElementById('tabu').value = tab;

ASP.NET中的

<asp:TextBox ID="tabu" runat="server" ClientIDMode="Static"></asp:TextBox> 

对于您的隐藏字段也是如此,因为它是服务器端控件。