取消选中复选框时清除输入

时间:2015-03-02 20:54:36

标签: javascript jquery html checkbox

我正在制作一个包含选项的表单。用户可以选择尽可能多的人。我的代码位于:

<b>Options</b>
<br>
<font size="1"> Please select all options wanted</font>
<br>
<input type="checkbox" id="none" value="X"     onchange="updateText('none')">None
<br>
<input type="checkbox" id="prof" value="P" onchange="updateText('prof')">Profiled w/ Data
<br>
<input type="checkbox" id="slave" value="SL" onchange="updateText('slave')">Slaved each end
<br>
<input type="checkbox" id="silco" value="SN" onchange="updateText('silco')">SilcoNert® Coating
<br>
<input type="checkbox" id="pass" value="PP" onchange="updateText('pass')">Power Pass Through
<br>
<input type="checkbox" id="dur" value="DR" onchange="updateText('dur')">Dursan Coating
<br>
<input type="checkbox" id="thermo" value="TP" onchange="updateText('thermo')">Thermocouple Pass Through
<br>
<input type="checkbox" id="ss" value="SR" onchange="updateText('ss')">Stainless Steel 1/16" Braided Strain Relief
<br>
<br>
<input type="hidden" value="" maxlength="1" size="1" id="profText" />
<input type="hidden" value="" maxlength="1" size="1" id="slaveText" />
<input type="hidden" value="" maxlength="1" size="1" id="silcoText" />
<input type="hidden" value="" maxlength="1" size="1" id="passText" />
<input type="hidden" value="" maxlength="1" size="1" id="durText" />
<input type="hidden" value="" maxlength="1" size="1" id="thermoText" />
<input type="hidden" value="" maxlength="1" size="1" id="options2Text" />
<input type="text" value="" maxlength="1" size="1" id="completeText"   style="width: 200px; border:1px solid #CC0000;" />

< script type = "text/javascript" >

function updateText(type) {
    var id = type + 'Text';
    var endValue;
    var inputValue = document.getElementById(type).value;

    document.getElementById(id).value = inputValue;

    endValue = document.getElementById("seriesText").value;
    if (document.getElementById("tubeText").value != "") {
        endValue = endValue + "-" + document.getElementById("tubeText").value;
    }
    if (document.getElementById("sizeText").value != "") {
        endValue = endValue + "-" + document.getElementById("sizeText").value;
    }
    if (document.getElementById("voltageText").value != "") {
        endValue = endValue + "-" +    document.getElementById("voltageText").value;
    }
    if (document.getElementById("sensorText").value != "") {
        endValue = endValue + "-" + document.getElementById("sensorText").value;
    }
    if (document.getElementById("temperatureText").value != "") {
        endValue = endValue + "-" + document.getElementById("temperatureText").value;
    }
    if (document.getElementById("sleeveText").value != "") {
        endValue = endValue + "-" + document.getElementById("sleeveText").value;
    }
    if (document.getElementById("portText").value != "") {
        endValue = endValue + "-" + document.getElementById("portText").value;
    }
    if (document.getElementById("connectorText").value != "") {
        endValue = endValue + "-" + document.getElementById("connectorText").value;
    }
    if (document.getElementById("lengthText").value != "") {
        endValue = endValue + "-" + document.getElementById("lengthText").value;
    }
   if (document.getElementById("profText").value != "") {
        endValue = endValue + "-" + document.getElementById("profText").value;
    }
    if (document.getElementById("slaveText").value != "") {
        endValue = endValue + "-" + document.getElementById("slaveText").value;
    }
    if (document.getElementById("silcoText").value != "") {
        endValue = endValue + "-" + document.getElementById("silcoText").value;
    }
    if (document.getElementById("passText").value != "") {
        endValue = endValue + "-" + document.getElementById("passText").value;
    }
    if (document.getElementById("durText").value != "") {
        endValue = endValue + "-" + document.getElementById("durText").value;
    }
    if (document.getElementById("thermoText").value != "") {
        endValue = endValue + "-" + document.getElementById("thermoText").value;
    }
    if (document.getElementById("options2Text").value != "") {
        endValue = endValue + "-" + document.getElementById("options2Text").value;
    }
    document.getElementById("completeText").value = endValue;
} < /script>
</body > < /div>
</div > < /div>
</div > < br >

当用户选择该选项时,该选项的值应显示在底部的输入框中。但是,当用户选择一个选项时,即使他们取消选中该框,当前该值仍保留在输入框中。有没有办法清除该值,如果复选框从选中变为未选中使用javascript?

我对Javascript / HTML有点新鲜,我在Google上搜索过。结果似乎对我的代码不起作用。

2 个答案:

答案 0 :(得分:0)

您需要检查复选框是否已选中并根据需要设置或清除输入:

function updateText(type) {
    var id = type + 'Text';
    var checkbox = document.getElementById(type);
    var endValue;

    document.getElementById(id).value = checkbox.checked ? checkbox.value : '';

答案 1 :(得分:0)

我看到你将jquery作为标记包含在内,所以我有一个工作但业余的jquery解决方案。我确实改变了你的html,特别是从文本框中删除了最大长度和大小。

<b>Options</b>
<br>
<font size="1"> Please select all options wanted</font>
<br>
<input type="checkbox" id="none" value="X">None
<br>Profiled w/ Data
<br>
<input type="checkbox" id="slave" class="choice" value="SL">Slaved each end
<br>
<input type="checkbox" id="silco" class="choice" value="SN">SilcoNert® Coating
<br>
<input type="checkbox" id="pass" class="choice" value="PP">Power Pass Through
<br>
<input type="checkbox" id="dur" class="choice" value="DR">Dursan Coating
<br>
<input type="checkbox" id="thermo" class="choice" value="TP">Thermocouple Pass Through
<br>
<input type="checkbox" id="ss" class="choice" value="SR">Stainless Steel 1/16" Braided Strain Relief
<br>
<br>
<input type="text" id="choiceDisplay" value="" id="completeText" style="width: 200px; border:1px solid #CC0000;" readOnly/>


var $choiceDisplay = $("#choiceDisplay"), //jquery selector for the display box
    $none = $("#none"), //jquery selector for clear-choices option
    $choice = $(".choice"); //jquery selector for choices to list

$choice.on("change", function () {
    var $this = $(this), //jquery selector for the changed input
        isThisChecked = $this.prop("checked"), //true if the box is checked
        choiceSelectionsArray = $choiceDisplay.val().split(",").filter(function(e){return e !== ""}), //array of values that are checked
        isThisValueInDisplayedSelection = $.inArray($this.val(), choiceSelectionsArray) !== -1; //true when $this value displayed

    if (isThisChecked) {
        if (isThisValueInDisplayedSelection) {
            return false; //odd, the value is already displayed.  No work to do.
        } else { //value not in selection, so add it
            choiceSelectionsArray.push($this.val());
            $choiceDisplay.val(choiceSelectionsArray.join());
        }
    } else { //box has been unchecked
        if (isThisValueInDisplayedSelection) {
            choiceSelectionsArray = choiceSelectionsArray.filter(function(e){return e !== $this.val()})
            $choiceDisplay.val(choiceSelectionsArray.join());
        }
    }
});

$none.on("change", function () {
   var $this = $(this),
       isThisChecked = $this.prop("checked");
    if(isThisChecked){
        $choice.prop({
            disabled: true,
            checked : false
        });
        $choiceDisplay.val("");
    }else{
        $choice.prop({disabled: false});
        return false;
    }
});

jsFiddle