2

追加された行に「True」、「False」、「Yes」、「No」のボタンが表示されません。

ここにアプリケーションがあります:アプリケーション

アプリケーションを使用するには、次の手順に従ってください。

1. アプリケーションを開くと、緑色のプラス ボタンが表示されます。このボタンをクリックすると、モーダル ウィンドウが表示され、内部に検索バーが表示されます。

2. 検索バーに次の「オレンジ」と入力し (二重引用符なし)、検索を送信します。

3. 検索の用語と「質問」列の下の用語に一致する行が表示されます。「回答」列の下に、回答が「True」であることが表示されます。「追加」ボタンをクリックして行から内容を追加してください。

4. 右側に「True」ボタンと「False」ボタンが表示され、「True」ボタンが緑色で強調表示されていることがわかります。これで問題ありません。

しかし、以下で問題が発生します。

1. [質問を追加] ボタンをクリックすると、下に行が追加され、上からコントロールがコピーされます。

2. 追加した行に別の緑色のプラス ボタンが表示されます。このボタンをクリックして、手順 2 と 3 をもう一度実行します。

追加された行には、「True」または「False」ボタンがまったく表示されていないことがわかります。だから私の質問は、追加された行内で、モーダルウィンドウから質問を追加すると、答えが「True」または「False」の場合に「True」または「False」ボタンが表示されないのはなぜですか? これは「はい」「いいえ」ボタンでも同様です。

コード全体が jsfiddle に表示されます (モーダル ウィンドウを開く関数は、フィドルの JavaScript セクションの下部にあります)。

http://jsfiddle.net/WZKrP/6/

コード:

function plusbutton(plus_id) {
    // Set global info
    plusbutton_clicked = plus_id;
    // Display an external page using an iframe
    var src = "previousquestions.php";
    $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
    return false;
}

    function addwindow(numberAnswer, gridValues, btn) {

        if (btn == "True" || btn == "False" || btn == "Yes" || btn == "No") {
            var answers = '#answer' + btn;
            var answersrow = '#answer' + btn + 'Row';
        } else {
            var answers = $.map(btn.split(''), function(chr) {
                return "#answer" + chr;
            }).join(', ');
            var answersrow = $.map(btn.split(''), function(chr) {
                return "#answer" + chr + "Row";
            }).join(', ');
        }

        var myNumbers = {};
        myNumbers["True or False"] = "True or False";
        myNumbers["Yes or No"] = "Yes or No";

        gridValues = myNumbers[gridValues];

        if ($(plusbutton_clicked).attr('id') == 'mainPlusbutton') {



            if (gridValues == "True or False") {
                $('#btn' + 'TrueorFalse').trigger('click');

            }

            else if (gridValues == "Yes or No") {
                $('#btn' + 'YesorNo').trigger('click');
            }



            $('#answerSection').find('.answerBtnsOn').trigger('click');
            $(answers).trigger('click');

        } else {

            if (gridValues == "True or False") {
                $(plusbutton_clicked).closest('tr').find('input.gridTxtRow').val(gridValues).parent().append($('.optionTypeTbl'));
                $('#btn' + 'TrueorFalse').trigger('click');

            }

            else if (gridValues == "Yes or No") {
                $(plusbutton_clicked).closest('tr').find('input.gridTxtRow').val(gridValues).parent().append($('.optionTypeTbl'));
                $('#btn' + 'YesorNo').trigger('click');
            }


        }

        $('#btn' + gridValues).trigger('click');
        $(plusbutton_clicked).closest('tr').find('.answerBtnsOn').trigger('click');
        $(plusbutton_clicked).closest('tr').find(answersrow).trigger('click');


        $.modal.close();
        return false;
    }​

トッププラスボタンの HTML:

<table id="question">
<tr>
<td colspan="2">
<a onclick="return plusbutton();">
<img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/>
</a>
<span id="plussignmsg">(Click Plus Sign to look up Previous Questions)</span>
</td>
</tr>
</table>

以下は、各行にプラスボタンを追加する jquery コードです。

$('.plusimage').each( function() {

    var $this = $(this);
var $plusimagerow = $("<a onclick='return plusbutton(this);'><img src='Images/plussign.jpg' width='30' height='30' alt='Look Up Previous Question' class='imageplus'/></a>").attr('name',$this.attr('name')+"[]")
               .attr('value',$this.val());

$plusrow.append($plusimagerow);

});
4

2 に答える 2

2

各ボタンのインライン スタイル定義に問題があります ( <input class='answerBtnsRow answers' type='button' style='**display:none**' ...>CSS クラス answerBtnsOn を適用するたびに、表示をインラインに戻す、ブロックするなどのディレクティブが指定されていません。answerBtnsOn クラスに 1 行追加できますが、!important ディレクティブを使用するとオーバーライドされます)。 jQuery コードで定義されたインライン スタイル: display:inline !important.

もう 1 つの方法は、jQuery (例: $('#element').css('display', '');) を使用して、ボタンを非表示に設定する jQuery スクリプトのインライン スタイルを変更または削除することです。

answrBtnsOn および answerBtnsOff クラスを確実に更新して、インライン スタイル定義を回避します。

ご質問やご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-10-15T15:51:40.580 に答える
0

私はあなたを理解していないと思います。これはあなたがやろうとしていることですか? ここに画像の説明を入力

于 2012-10-15T15:52:55.930 に答える