如何获取输入新的属性值

时间:2014-02-05 11:45:34

标签: javascript jquery html

我尝试为输入'pid'属性设置新值并获取此值,但我得到null

我在jquery中有这段代码:

$(".feauter-product-holder").click(function () {
  $("#productsubject").attr("pid", $(this).find("input[type=hidden]").attr("id"));
});

和我的HTML代码:

<div class='feauter-product-holder'>
  <input type="hidden" id="3">
</div>
<asp:TextBox runat="server" ID="productsubject" pid=""></asp:TextBox></div>
 $.ajax({
                    url: editor.config.saveSubmitURL,//the url to post at... configured in config.js
                    type: 'POST',
                    data: { servicename: "savedata", text: data, subject: $("#productsubject").val(), pid: $("input[id$='productsubject").attr("pid") },//editor.name contains the id of the current editable html tag
                })

我编辑这篇文章 我写了错误的类div,但在我的代码中是正确的。 当我在ajax中调用pid时,我得到null

我该怎么办?

3 个答案:

答案 0 :(得分:5)

由于错误的css类调用,无法找到您的DIV。尝试:

<div class="feauter-product-holder">

答案 1 :(得分:1)

首先删除“。”从DIV中的类名然后 你可以尝试这样: -

$(".feauter-product-holder").click(function () {
  $("input[id$='productsubject']").attr("pid", $(this).find("input[type=hidden]").attr("id"));
});

使用Jquery处理ASP控件时使用like(Element以selector结尾) 示例: - $("input[id$='productsubject']") .. $("#productsubject")无效。

实际上在ASP.NET中如果使用具有某些ID的asp控件,ASP.NET Naming container会更改控件ID,如ctl001_yourcontrolID以避免冲突。因此,在Jquery中,当您通过其ID(例如$("#productsubject"))选择元素时,由于其ID已被更改,您将无法获得该元素。为了说明,你可以检查Firebug或chrome的inspect元素中的asp控件。

因此,当您编写$("input[id$='productsubject']")时,会选择ID以productsubject结尾的元素。

答案 2 :(得分:0)

你有2个问题 - div上的类不正确,而.net也会改变文本框的id。

尝试

<div class="feauter-product-holder"> 

为div。

如果您使用的是.net 4,可以在文本框中设置ClientIDMode =“Static”,如下所示

<asp:TextBox runat="server" ID="productsubject" pid="" ClientIDMode="Static"></asp:TextBox></div>