2010-03-29 60 views
0

当我有一组复选框或单选按钮时,我经常需要有一个其他选项。这个复选框或单选按钮通常伴随着一个文本框,用户应该填写这个其他是。清洁和访问其他选项(复选框和文本框)

你通常如何处理这个设置?你使用什么样的标记?你在验证时需要什么?你使用Java脚本的任何东西?例如:

  • 您如何使表格可访问?例如,您是否使用过标签标签?如何使用标签标签?
  • 你用任何方式连接复选框和文本框与一些JavaScript?例如,当复选框被选中时是否激活文本框?如果文本框被填写或清除,您是否自动选中或取消选中该复选框?
  • 如果选中复选框但未填写文本框,或者如果文本框已填写但复选框未选中,您是否让验证失败并显示错误消息?或者你只是认为它没有填写,没有检查?

非常不确定如何处理这个问题最好的交易,所以任何的建议和示例是最欢迎C”)

回答

0

通常当我有动态的形式,我插入动态输入,也就是说,在在使用jQuery的情况下,我将使用.append('<input...')或其他一些类似的函数来实际插入元素,并为其添加id(或者class,具体取决于),以便在用户决定要使用其他选项时验证是通过一个输入按钮上的onClick来处理的,如果我感觉自己很兴奋,我会去AJAX路线,并跳过<form>

我肯定会让验证失败。他们想要“其他”,并且想知道“其他”是什么。如果你不关心其他是什么,那么不要打扰输入框。

编辑:可能看起来像这样。

$('input[type="radio"]').click(function() { 

    if($(this).next().attr('name') != 'other' && $(this).attr('name') == 'other_input') { 
     $(this).after('<textarea name="other"></textarea>'); 
    } else { 
     $('textarea[name="other"]').remove(); 
    } 
} 

click将响应任何无线电被点击,而if将确保这仅仅是“其他”单选按钮,将在点击反应,如果有是不是会才反应过来已经是一个textarea之后(所以你没有得到多个textarea发音)。

在事情的处理方面,您必须首先进行验证,以查看是否检查了其他内容,并且如果是,则抓取textarea的输入。你应该使用服务器端验证。

希望能让你开始。

+0

你有“连接”的其他输入字段的示例使用jQuery的其他复选框或单选按钮? – Svish 2010-03-29 19:30:31

+0

难以让它在值中而不是名称中寻找“other”?由于在复选框和广播框的情况下,当它们在同一组中时,名称是相同的。 – Svish 2010-03-29 19:59:12

+0

当然。在实践中,我可能最终会这样做。事实上,我是盲目的,只是输入可以工作的代码。它看起来更像'&& $(this).val()=='other')'。在这一点上,“其他”单选按钮,仅仅是一个方法,让您的后处理知道,有一个文本框它应该看看,因为“其他”有没有其他内在的或真正的价值。 – dclowd9901 2010-03-29 21:15:31

0

我一般附上我的单选按钮在这样的标签:

<label><input type=radio value=xyz name=stjames>Saint James</label> 

这种方式,用户可以点击文本触发按钮。

当决定如何表现时,我通常会对自己说:“当用户这样做时,你认为用户期望的是什么......”并且经常给我答案。因此,在文本框的单击或焦点上,打开与之配合的收音机。如果你禁用了文本框,这将不起作用!

() US () UK  (*) Other [________________] 

如果其他的选择是一个危险的(删除数据),不过,我会禁用文本框,直到用户明确点击其他。然后,电台驱动文本框而不是其他方式。你希望用户在这种情况下必须经过另一个步骤。这取决于情况 - 考虑在每种情况下会发生什么。

我平时尽量使它不可能或恼人的用户做一些“错误”。如果某些不一致,EG禁用OK按钮。或者,当用户输入文字时选择其他广播。如果文本框中有文本,但单选按钮设置为不同的内容,我通常会忽略文本。但是,如果这是一种严重/危险的情况,你想确保用户的决心;如果您在用户选择不同的收音机时删除了文字,这可能会让他们失望,但如果他们应该小心,可能是合适的。