Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 切换按钮时如何删除文本输入?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 切换按钮时如何删除文本输入?

Javascript 切换按钮时如何删除文本输入?,javascript,jquery,html,Javascript,Jquery,Html,对于“是”、“否”、“真”和“假”按钮,我没有完全正确的测试输入。您可以自己查看和测试。请按照以下步骤操作: 单击“打开网格”并选择按钮“真或假”,“真”和“假”按钮将出现 单击按钮“True”,按钮将变为绿色,您将看到下面该按钮的文本输入。这很好 现在点击“False”按钮,“False”按钮打开,“True”按钮关闭(返回为白色)。现在好的是出现了“假”文本输入,坏的是它没有删除“真”文本输入 因此,我的问题是,如果用户单击“真”或“假”或“是”或“否”的备选按钮,我希望刚刚关闭的按钮将其输

对于“是”、“否”、“真”和“假”按钮,我没有完全正确的测试输入。您可以自己查看和测试。请按照以下步骤操作:

  • 单击“打开网格”并选择按钮“真或假”,“真”和“假”按钮将出现
  • 单击按钮“True”,按钮将变为绿色,您将看到下面该按钮的文本输入。这很好
  • 现在点击“False”按钮,“False”按钮打开,“True”按钮关闭(返回为白色)。现在好的是出现了“假”文本输入,坏的是它没有删除“真”文本输入
  • 因此,我的问题是,如果用户单击“真”或“假”或“是”或“否”的备选按钮,我希望刚刚关闭的按钮将其输入删除

    如何做到这一点

    以下是添加和删除输入的功能:

          function btnclick(btn)
    {
        var context = $(btn).parents('#optionAndAnswer');
        if (context.length == 0) {
            context = $(btn).parents('tr');
        }
        var $btn = $(btn);
        var value = btn.value;
        var id = $btn.attr('id');
    
        var $otherYNBtn = value === "Yes" ? $(context.find("input[value='No']")) : $(context.find("input[value='Yes']"));
        var $otherTFBtn = value === "True" ? $(context.find("input[value='False']")) : $(context.find("input[value='True']"));
    
    
        if ($(context.find("input[value='Yes']")).hasClass('answerBtnsOn')) {
            $otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
        }
    
        else if ($(context.find("input[value='No']")).hasClass('answerBtnsOn')) {
            $otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
        }
    
        if ($(context.find("input[value='True']")).hasClass('answerBtnsOn')) {
            $otherTFBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
        }
    
        else if ($(context.find("input[value='False']")).hasClass('answerBtnsOn')) {
            $otherTFBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
        }
    
    
        if ($(btn).hasClass('answerBtnsOff')) {
            var n = $("input[name='" + id + "value']").length;
            var hid = "hidden" + id + n + "value";  
            $(btn).attr("data-hid", hid);
    
            // append those values to the form
            var input = '<input type="text" id="' + hid + '" value="' + value + '" name="' + id + 'value" />';
            $('#QandA').append(input);      
            // toggle the button
            $btn.removeClass('answerBtnsOff').addClass('answerBtnsOn'); 
        // do the opposite - remove the input
        }
        else {
            $("#" + $(btn).attr("data-hid")).remove();
            $btn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
        }  
    
    
        $('.answertxt', context).val(context.find('.answerBtnsOn').length > 0 ? context.find('.answerBtnsOn').length : 0);
    
        return false;
    }
    
    功能btn点击(btn)
    {
    变量上下文=$(btn).parents('optionandswer');
    if(context.length==0){
    上下文=$(btn).parents('tr');
    }
    变量$btn=$(btn);
    var值=btn.value;
    变量id=$btn.attr('id');
    var$otherYNBtn=value==“是”?$(context.find(“输入[value='No']”):$(context.find(“输入[value='Yes']”);
    var$otherTFBtn=value==“True”?$(context.find(“输入[value='False']”):$(context.find(“输入[value='True'])));
    if($(context.find(“input[value='Yes'])).hasClass('answerBtnsOn')){
    $otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }
    else if($(context.find(“input[value='No'])).hasClass('answerBtnsOn')){
    $otherYNBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }
    if($(context.find(“input[value='True'])).hasClass('answerBtnsOn')){
    $otherTFBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }
    else if($(context.find(“input[value='False'])).hasClass('answerBtnsOn')){
    $otherTFBtn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }
    if($(btn).hasClass('answerBtnsOff')){
    var n=$(“输入[name='”+id+“value']”)长度;
    var hid=“隐藏”+id+n+“值”;
    $(btn).attr(“数据隐藏”,隐藏);
    //将这些值附加到表单中
    var输入=“”;
    $('#QandA')。追加(输入);
    //切换按钮
    $btn.removeClass('answerBtnsOff')。addClass('answerBtnsOn');
    //执行相反的操作-删除输入
    }
    否则{
    $(“#”+$(btn).attr(“数据隐藏”).remove();
    $btn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }  
    $('.answertxt',context.val(context.find('.answerBtnsOn').length>0?context.find('.answerBtnsOn').length:0);
    返回false;
    }
    
    以下是“真”、“假”、“是”和“否”按钮:

    
    3.答复
    
    我建议保留一个问题计数计数器,这样每个选项和答案框都有一个id,这样您就可以在添加新框之前从中删除任何现有框。这还允许您追溯更新它(在添加第四个问题后设置第三个问题)

    以下是针对您的JSFIDLE的解决方案:


    总的来说,你的方法不是最好的方法,但我没有时间从头开始。下一次,我会考虑把你的问题和答案放到课堂上,并只为这些值保持一个全局数组。通过这种方式生成Html代码将更容易与实际值和重要属性分离。

    你能给我看一个关于如何设置计数器的示例代码吗?如果你不介意的话,这将对我非常有帮助:)我可以看到它是如何完成的,以备将来使用。单击“True”后,Html()会将我带到另一个页面例如,文本输入将显示在另一个页面上。我应该使用.html(“”)以外的东西吗?实际上我尝试了.append(“”),但它仍然没有解决切换按钮时删除文本输入的问题。它会将您带到另一个页面?如果您使用.append将这些添加到#QandA区域,那么jQuery('#QandA').html('')将清空该div。它不应该带您进入新页面。好的,给我们10分钟的时间来设置fiddle。好的,我已经设置了JSFIDLE,它是。我减少了代码,这对你来说更容易。我只包括按钮“真”或“假”。您可以通过单击“添加问题”按钮来追加行。我可以请你帮个大忙吗,你不必这么做,但我想知道你是否可以在你的修复代码中包含某种计数,这样我们就知道哪个文本输入属于哪个按钮了?这实际上是saml在回答这个问题时所说的
     <table id="optionAndAnswer" class="optionAndAnswer">
        <tr>
        <tr class="answer">
        <td>3. Answer</td>
        <td>
        <table id="answerSection">
      <tr>
    <td>
    <input class="answerBtns answers answerBtnsOff" name="answerName[True]"  id="answerTrue"    type="button"   value="True"    onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerName[False]" id="answerFalse"   type="button"   value="False"   onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerName[Yes]"   id="answerYes"     type="button"   value="Yes"     onclick="btnclick(this);"/>
    <input class="answerBtns answers answerBtnsOff" name="answerName[No]"    id="answerNo"      type="button"   value="No"      onclick="btnclick(this);"/>
    </td>
    </tr>
        </table>
        </td>
        </tr>
        </table>