得到未回答的问题(单选按钮)JQuery

时间:2012-01-30 22:12:25

标签: jquery

我想验证是否所有问题都得到了回答,并显示消息“需要回答”。 每个问题都有YES和NO单选按钮。

即使选中了一个单选按钮,下面的代码也会为每个问题放置“需要回答”。但我希望在没有单选按钮或为该问题选择时显示该消息。

  $('input:radio').not(':checked').closest('td').next().html("Answer is Required");

HTML:

<table border="0">
    <tr>
        <td class="TextBold">1.</td>
        <td class="TextBold" align="left" valign="middle">Content of Question 1 :</td>
        <td class="TextBold" align="left" valign="middle">
            <table id="ctl00_DefaultContent_ctl01" border="0">
                <tr>
                    <td>
                        <input id="ctl00_DefaultContent_ctl01_0" type="radio" name="ctl00$DefaultContent$ctl01" value="Yes" />
                        <label for="ctl00_DefaultContent_ctl01_0">Yes</label>
                    </td>
                    <td>
                        <input id="ctl00_DefaultContent_ctl01_1" type="radio" name="ctl00$DefaultContent$ctl01" value="No" />
                        <label for="ctl00_DefaultContent_ctl01_1">No</label>
                    </td>
                </tr>
            </table>
        </td>
        <td class="TextBold" align="left" valign="middle"></td>
    </tr>
</table>

请建议。

提前致谢

BB

3 个答案:

答案 0 :(得分:1)

在不知道HTML结构的情况下,很难给出明确的答案,但我想这样的事情应该有效:

$('td').not(function() {
    var $radios = $(this).find('input[type="radio"]');
    return $radios.length === 0 || $radios.filter(':checked').length > 0;
}).next().html("Answer is Required");

更新:嵌套表让它变得有点棘手。我建议你要么摆脱它们(无论如何使用表格进行样式处理),或者为那些包含可供选择的选项(整个嵌套表格)的表格单元格添加一个类,以便您可以更容易地选择它们

答案 1 :(得分:1)

是的,在对嵌套表结构进行一些限制之后,关键的一点是:

$('table td:has(table)')
    .has('input:radio:not(:checked)') // Contains unchecked radios
    .not(':has(input:radio:checked)') // Doesn't contain checked radios
    .next()
    .html("Answer is required");
;

演示:http://jsfiddle.net/euN2Z/2/

(我在演示中添加了一行来清除旧的验证消息;这可能对您有用,具体取决于您的要求。)

您对此必须使用HTML表示最大的同情。我强烈建议,如果可能的话,你应该安排简化;在使用DOM时,嵌套表格尤为血腥,最轻微的改变可能会让整个事情大为震惊。

我猜这是一个包含更多表格的大页面的一部分,因此我强烈建议您使用例如表格来识别包含您的问题的表格。 id属性并相应地更新选择器。

答案 2 :(得分:0)

尝试替换

$('input:radio')

通过

$('input[type=radio]')