这里总计N00b,我有一个长形式向导,需要根据单选按钮动态显示/隐藏一步。到目前为止,所有代码都很酷。
function checkRb () {
if($(this).is(":checked")){
//yes
$("#do_frick").val("step5");
//alert ("yeah");
}else {
//no
$("#do_frick").val("submit_step");
//alert ("no");
}
}
问题是隐藏字段“#do_frick”在页面的下方几步。如果我将它放在与复选框相同的div中,则值不会改变。将“#do_frick”放在表格的下方,它不会改变。
我希望$(this)只查看当前div而不是整个文档。我在一位非常优秀的程序员的帮助下得到了这一点,并且不想用N00b问题进一步惹恼他,任何帮助都非常感激:)
如果我将“#do_frick”放在页面下方的div中,表单向导会将显示设置为:none并且div中的任何内容都无法设置...这是否正确?
答案 0 :(得分:1)
请查看您网页的来源,以便在几个步骤时查看隐藏字段的 ID 。如果ID相同,那么位置应该不是问题。
此 不是当前的div。在事件处理程序中,它表示引发事件的对象。您应该查看jquery.com以获取更多相关信息。
PS: - 尝试像这样设置隐藏字段的值
$("#do_frick").attr("value","submit_step");
答案 1 :(得分:0)
按照上面的建议在生成的html中查找id。
同时查找任何其他元素共享的任何重复ID,这将搞乱事情。
答案 2 :(得分:0)
在面对很多面条后,答案是jQuery中的一个小错误/打嗝
每当字段位于具有规则“dsiaply:none;”的div中时应用jQuery无法到达内部并进行更改。使用firebug进行检查,该字段具有附加值“disabled =''”。使用命令
$('#do_frick').get(0).disabled = false
对它进行排序..最后:)
最终代码:
function checkRb () {
if($(this).is(":checked")){
//yes
$('#do_frick').get(0).disabled = false //The important bit
$("#do_frick").val("step5");
//alert ("yeah");
}else {
//no
$("#do_frick").val("submit_step");
//alert ("no");
}
}