1

我正在尝试构建一个禁用由用户从菜单中选择确定的隐藏字段的表单。一开始我可以很容易地禁用所有字段,当用户选择不同的选项时,我可以重新启用特定字段。但是,当用户单击“更改位置”时,我需要能够重新禁用所有字段,但我根本无法正常工作!

到目前为止,这是我的代码......我的代码背后的目的可能对您来说并不完全清楚,因为为了清晰起见,它经过大量编辑,但发生了各种其他不相关的事情。我只想说,这就是我需要做的:)

jQuery:

$('input[name="hosted_button_id"]').attr("disabled",true);

$('#changelocation').click(function(){
    $('input[name="hosted_button_id"]').attr("disabled",true);
});


$('.deliveryselection').change(function(){    
    var deliveryLocation = $(this).val();
    $('input[title="' + deliveryLocation + '"]').removeAttr("disabled");
});

​</p>

HTML:

<select class="deliveryselection">
    <option>Please select</option>
    <option value="UK">UK</option>
    <option value="Europe">Europe</option>
    <option value="North America">North America</option>
    <option value="Rest of World">Rest of World</option>
</select>
<a href="javascript:void(0)">Change location</a>
<form>
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="button" name="hosted_button_id" title="UK" value="UK"><br />
    <input type="button" name="hosted_button_id" title="Europe" value="Europe"><br />
    <input type="button" name="hosted_button_id" title="North America" value="North America"><br />
    <input type="button" name="hosted_button_id" title="Rest of World" value="Rest of World"><br /><br />
    <input type="submit" name="submit">
</form>
​

我已经在这里的 jsfiddle 中设置了这个:http: //jsfiddle.net/solomon/rS7nV/1/

编辑 我想我已经发现了这个问题。在我的实际代码中,我一直在处理隐藏字段,而不是按钮字段,所以我无法直接看到我的劳动成果——我一直在使用 Firebug 来确定隐藏字段的禁用条件。只有在使用 jsfiddle 时将它们转换为按钮,我才发现我的代码工作正常(除了我在删除 ID 时犯的一个男生错误......谢谢你们的帮助!)。事实证明,Firebug 没有更新它的报告,并且仍然告诉我这些字段没有被禁用——尽管我的代码工作得很好!这有点令人沮丧——我整个下午都浪费在了一个 Firebug 错误上!:)

没关系 - 现在一切都解决了:)

4

3 回答 3

3

问题是您没有带有 id 的元素changelocation。添加id就可以了。

http://jsfiddle.net/rS7nV/4/

于 2012-04-16T14:28:33.017 回答
0

在 div 中声明一个类并使用 jQuery 调用它,如下所示

jQuery(".declaredclassname").attr("disabled", true);

于 2013-11-13T02:44:13.943 回答
0

如果您为包含隐藏字段的表单提供 id,您可以轻松禁用所有隐藏字段:

$("#hiddenFormId input").attr("disabled", true);
于 2012-04-16T14:28:48.260 回答