2012-07-08 131 views
2

有一堆字母按钮的代码如下:如何关闭字母按钮?

<?php 
    $a = range("A","Z"); 
?> 

<table id="answerSection"> 
    <tr> 

<?php 
    $i = 1; 
    foreach($a as $key => $val){ 
     if($i%7 == 1) echo"<tr><td>"; 
     echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\">";  
     if($i%7 == 0) echo"</td></tr>"; 
     $i++; 
    } 
?> 
    </tr> 
</table> 

现在下面的代码能够打开接听按钮:

$('#answer'+btn).addClass("answerBtnsOn"); 

但我想要做的就是能够打开一些接听按钮并关闭其他接听按钮。

例如,如果答案是A,那么我希望按钮“A”打开上面的代码行,但我希望所有其他字母按钮关闭。我怎样才能关闭其他字母按钮?

这里的代码将关闭字母按钮addClass("answerBtnsOff");

UPDATE:

我有一个小问题,以及。如果“答案”是A,那么字母按钮“A”被打开,这很好,但如果答案是“BD”,则它应该打开字母按钮“B”和“D”,但是它不会“打开任何按钮。有人知道这是为什么吗?

回答

0

尝试下面的选择组合:

$('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOn").removeClass("answerBtnsOff"); 
$('[id^="answer"]').not('#answer'+btn1+', #answer'+btn2).addClass("answerBtnsOff").removeClass("answerBtnsOff"); 
+0

这个组合没有起作用,什么都没有发生 – user1490145 2012-07-08 01:18:44

+0

看看编辑后的代码是否工作...否则请在http: //jsfiddle.net – bPratik 2012-07-08 01:23:18

+0

我不会将整个代码放在小提琴中,因为有很多php代码可以让应用程序完全工作,并且php不能在小提琴中工作。你的代码只适用于2个按钮,还是假定适用于所有字母按钮?因为我得到一个错误,说明btn1是未定义的 – user1490145 2012-07-08 01:27:51

0

恩,这可能太简单了,但是你可以先把它们全都关掉,然​​后再打开选定的那个?

编辑:

尝试这种情况:

$(".answers").addClass("answerBtnsOff"); 
$('#answer'+btn).addClass("answerBtnsOn"); 
+0

我会尝试,即时猜测代码是这样的:( 'answerBtns ')'$ removeClass(' answerBtnsOn ')找到(' #答案'。 + BTN).addClass( “answerBtnsOn”);'? – user1490145 2012-07-08 01:12:58

+0

嗨,我试过了你的编辑,但它并没有关掉答案按钮,还有其他想法能够关闭按钮吗?我也试过$(“。answerBtns”)。addClass(“answerBtnsOff”);但这没有效果 – user1490145 2012-07-08 01:29:00

+0

没关系,想出了如何将它们全部关闭然后重新打开,这是代码:\t \t'$(“。answerBtns”)。removeClass(“answerBtnsOn”); \t \t $('#answer'+ btn).addClass(“answerBtnsOn”);' – user1490145 2012-07-08 01:41:13

2

一般模式。将所有的按钮复位到关闭状态和然后只启用所需的按钮。

// reset all answer buttons to the off state 
// remove any on/off classes 
$("#answerSection").find("button").removeClass("answerBtnsOff").removeClass("answerBtnsOn"); 

// set all buttons to off 
$("#answerSection").find("button").addClass("answerBtnsOff"); 

// now turn on only the buttons that are valid 
$("#answerA").removeClass("answerBtnsOff").addClass("answerBtnsOn"); 
$("#answerB").removeClass("answerBtnsOff").addClass("answerBtnsOn"); 
+0

看着你的例子我设法关闭所有按钮,然后打开选定的按钮。你可以请看看我的问题的更新,当有多个答案时,我有一个小问题 – user1490145 2012-07-08 01:40:39

+0

我已经更新了代码示例的第三部分'/ /现在只打开有效的按钮,它显示如何只启用所需的按钮。 – 2012-07-08 01:43:05

+0

不,我的意思是如果答案是“B”,那么它会选择按钮“B”,这很好,但是如果有多个答案,比如“BE”,那么它会转动所有的按钮,但它不会转动在按钮B和E上,如果有多个答案,我该如何开启按钮?它可以是任何多重答案,可以是“A D”或“C F H”或甚至“A B C R T”。它只打开一个按钮,如果它是一个单一的答案 – user1490145 2012-07-08 01:47:58

1

关于您的更新,如果我正确理解你,你有一串空格分隔的答案。如果是这样的情况下,该代码应当予以受理:

var answers = btn.split(" "); 
var answer_selector = '#answer'+answers.join(",#answer"); 
$(".answerBtns").removeClass("answerBtnsOn"); 
$(answer_selector).addClass("answerBtnsOn");