基本形式:
<body>
<form method="post">
<select name="details[1234567890123][strComplaintGroup]" id="details[1234567890123][strComplaintGroup]">
<option value="">Select</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
<select name="details[1234567890123][strComplaintDetail]" id="details[1234567890123][strComplaintDetail]">
<option value="">Select</option>
<option value="1">One</option>
<option value="2">Two</option>
</select>
</form>
</body>
和jQuery:
$(document).ready(function(){
$('select').on('change', function(){
var strId = $(this).attr('id');
if( strId.indexOf('strComplaintGroup') > 0 ){
var uniq_id = strId.substring(8,21); // details[<13 char uniq_id>][]
var strDetail = '#details[' + uniq_id + '][strComplaintDetail]';
console.log( strDetail );
$(strDetail).hide();
}
});
});
我正在尝试在更改ComplaintGroup时使用更改ComplaintDetail选项。我的变量console.log具有正确的值,但ComplaintDetail Id似乎作为jQuery选择器失败。
我已尝试$('#' + strDetail)
并将#
放入字符串中。没有运气。
我唯一可以猜到的是[]
导致失败。有效名称但不是有效的ID /选择器?正如您所看到的,我必须使用$(this)
而不是JS顶部的id。如果是这样,我怎么能克服这个? []
是必需的,因为这是一个子表单。
显然猜对了。将[]
更改为-
以获取ID,并且它可以正常运行。
也许这会帮助其他人,我花了两天时间试图解决这个问题。
答案 0 :(得分:1)
您使用了无效字符Id
。
ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(&#34; - &#34 ;),下划线(&#34; _&#34;),冒号(&#34;:&#34;)和句号(&#34;。&#34;)。
HTML 5更宽容,只说id必须包含至少一个字符,并且不能包含任何空格字符。