2011-09-27 49 views
0

我已经尝试了许多不同的事情,其中​​包括典型的形式重置和我发现整个网络没有运气的jQuery示例。重新启用无线电输入与清除功能

截图:

enter image description here

目标:

我有一个rankable列表,用户有望根据重要性将它们从1-6项目排序。如果他们为某一行选择“2”,我们不想让他们为另一行选择“2”。这是多数民众赞成完成这个jQuery的:

// Disable sibling radio buttons in form once an item is selected 
$("input:radio").click(function() { 
    var val = $(this).val(); 
    $(this).siblings("input:radio").attr("disabled","disabled"); 
    $("input:radio[value='" + val + "']").not(this).attr("disabled","disabled"); 
}); 

的问题:

此代码似乎是工作,有一对夫妇怪癖。

  1. 该代码可以正确禁用同级行,但是如果用户想要更改,它们会卡住。他们可以在一行上单击“2”,然后在同一行上单击“3”,但会完全禁用所有其他“2”和“3”选项。
  2. 用户需要通过“重新开始”或“重置”按钮来完全清除表单的方式,该方式显然需要一些我尚未弄清楚的特殊jQuery魔法。
  3. 我在另一篇文章from this url中引用了代码,但似乎只有一半在我的网站上工作。我注意到那个小提琴链接,如果你点击“1”,它也会在同一行禁用“2”和“3”,这在我的本地开发尝试中不会发生。但是,如果您点击“2”,则会在其他行中永久禁用“2”...所以我不确定它为什么在示例中有效,但不是我的代码(上图)。

有一些更简单的方法,我只是没有看到这里。我很欣赏任何可能适用于这些方面的帮助或代码示例。

+1

你可以张贴HTML结构? –

回答

1

而是彻底禁用无效的无线选项,可以改为采取两种方法之一:

  1. 当用户点击一个选项,验证动态选项,即当您点击另一个“3”时未选择“3”。如果无效,则向用户显示弹出窗口并将其清除。
  2. 当用户点击一个选项时,说一个“3”,然后清除所有其他“3”选项,以便一次只有一个选项被评为该数量。

这里是一个将使用方法#2,清理出每当一个选项被点击的所有相同的数值选项的示例代码:http://jsfiddle.net/xy9wC/

+0

这两个选项非常好的建议!我现在正在考虑所有选项,但这感觉像是一个非常有用的想法。 –

0

从用户的角度来看,禁用这些单选按钮可能会非常烦人,因为它会强制用户在选择其他选项时使用两次单击而不是一次。

更好的选择是向用户“建议”错误,然后在提交时强制执行它们。例如,您可以使无效选项为红色的行,然后允许用户发现错误并自行修复。

new design

的甚至比这更好的方式,使用jQuery来创建一个排序列表。

http://jqueryui.com/demos/sortable/

-Sunjay03

+0

是的,我也有过关于可排序列表的想法,但是,本网站的流程是在客户加入之前由客户预先考虑的。我会尽力给予一点,看看他们的想法。 –