2013-10-03 69 views
0

我有一个asp.net页面 - 它呈现了一些自定义控件,在主页面 - 我有一个asp.net文本框 - 在某些情况下,它必须在其他人可编辑它必须只读。大部分情况都是按预期工作。有一个我遇到困难的小错误。与asp.net文本框时,只读的奇怪行为

enter image description here

所以在我的上一年度列中的值渲染应该只有1,2,3,0 - 等 - 因为你可以使其创建此标记的标记时,看到由于某些原因:

<td id="ctl00_ctl00_PartContentPlaceHolderMain_ContentPlaceHolderMain_ctl00_ctrlComparison_ctrlComparisonCars1_ctl06"> 
         <input name="ctl00$ctl00$PartContentPlaceHolderMain$ContentPlaceHolderMain$ctl00$ctrlComparison$ctrlComparisonCars1$tbPreviousNoManualCars" type="text" value="1" disabled="disabled" id="ctl00_ctl00_PartContentPlaceHolderMain_ContentPlaceHolderMain_ctl00_ctrlComparison_ctrlComparisonCars1_tbPreviousNoManualCars" class="tbPreviousNumber ui-widget-content ui-corner-all" style="width:50px;display:none;"><span>1</span><span>1</span>      
        </td> 

所以问题是生成的双跨度。在呈现这个控制我的主页我想要做的事,如:

 var test = $("#ctl00_ctl00_PartContentPlaceHolderMain_ContentPlaceHolderMain_ctl00_ctrlComparison_ctrlComparisonCars1_PreviousNoManualCars").children().find('span').val(); 
     alert(test); 

不过我警告说不确定。是否有可能使用类似于上面的东西删除这些跨度中的一个?

还有一种更好的方式来获得将被呈现的id - 我刚刚从开发人员工具的屏幕上拉了确切的一个只是为了测试,试图让这个工作。

感谢

回答

1

您已经使用VAL(),但它应该是text(),因为它不是一个input元素,其span

也使用next()

var test = $("#ctl00_ctl00_PartContentPlaceHolderMain_ContentPlaceHolderMain_ctl00_ctrlComparison_ctrlComparisonCars1_tbPreviousNumberNoManualCars") 
    .next('span').text(); 
    alert(test); 
+0

喜Murali - 感谢您的回复 - 我使用了以下内容 - $(“#ctl00_ctl00_PartContentPlaceHolderMain_ContentPlaceHolderMain_ctl00_ctrlExposureCompa rison_ctrlExposureComparisonCanada1_tbPreviousNumberPrivatePassengers“)下( '跨度')除去()。; - 它的工作原理是它消除了跨度,表中的数据是正确的 - 是否有更好的方式从控件中获取id - 而不是复制我从已呈现标记 –

+1

@KOL中找到的内容,很高兴它可以正常工作。你可以访问id以外的元素,如果你不能预测的话。你可以使用'class'和'attriute'来访问它取决于你的情况。查看'jquery选择器'了解更多细节。现在你可以使用'$(“input [id * ='tbPreviousNumberNoManualCars']”)'这表示带有id的输入包含单词'tbPreviousNumberNoManualCars' –