繁体   English   中英

复选框和文本字段,如果已选中或具有值,则需要其他

[英]Checkbox and text field, if one is selected or has value require other(s)

我在一个组中有两个复选框,一个文本输入。 如果选择了一个(或两个)复选框,则需要输入文本,如果文本输入包含文本,则需要至少一个复选框。 我遇到的另一个问题是它使用的是自定义模板引擎(PHP后端),并且配置和获取正确的属性很麻烦,另一个问题是它全部由name属性引用,这就是为什么我使用HTML5我认为它起作用的复选框选项的数据组。

结合功能(使之更容易/更简单)来使它起作用的任何帮助。

顺便说一句,它正在运行1.3.2 jQuery

示例:(不起作用)

有什么建议么?

JS:

function checkboxSelectedRequiredAdditionalFields(elem) {
    var passedElement = $('input:checkbox[name=' + elem + ']');

    passedElement.click(function() {
        $('input[name=number]').attr('required', true).append('<span class="required">*</span>');
        alert('text is required now?');
    });
}

function numberEnteredRequiredAdditionalFields(elem) {
    var passedElement = $('input[name=' + elem + ']');

    if (passedElement.val().length > 0) {
        var boxes = $('input[data-group=cbOptions]').click(function() {
            boxes.not(this).attr('required', false);
            alert('checkbox is selected so other checkbox is not required');
        });

        $('input[data-group=cbOptions]').each(function() {
            $(this).attr('required', true).next().append('<span class="required">*</span>');
            alert('checkbox is required now?');
        });
    }
}

的HTML

<form>
    <label>
        <input type="checkbox" name="checkbox1" value="t" onclick="checkboxSelectedRequiredAdditionalFields('checkbox1');" data-group="cbOptions">
        Checkbox Option 1
    </label>
    <label>
        <input type="checkbox" name="checkbox2" value="t" onclick="checkboxSelectedRequiredAdditionalFields('checkbox2');" data-group="cbOptions">
        Checkbox Option 2
    </label> 
    Number <b>
    <input type="text" name="number" value="" size="" maxlength="9" onclick="numberEnteredRequiredAdditionalFields('number');">
    </b>
</form>

您应该将JavaScript与HTML分开。 小提琴: http : //jsfiddle.net/NYn8e/6/ 如果可能,请从HTML源代码中删除<b> ,并使用正确的CSS属性扩展样式表: font-weight: bold;

<form>
    <label>
        <input type="checkbox" name="checkbox1" value="t" data-required="checkbox">
        Checkbox Option 1
    </label>
    <label>
        <input type="checkbox" name="checkbox2" value="t" data-required="checkbox">
        Checkbox Option 2
    </label>
    Number <b>
    <input type="text" name="number" value="" size="" maxlength="9" data-required="number">
    </b>
</form>

JavaScript:

function required(){
    //Any checked checkbox? checked == 0 = no, otherwise: yes
    var checked = $('input[data-required=checkbox]:checked').length;
    var $checkboxes =  $('input[data-required=checkbox]');
    var $num = $('input[name=number]');
    var length = $num.val().length;

    //Remove previously added span, if existent.
    $num.next('span.required').remove();
    $checkboxes.next('span.required').remove();
    if(!length && checked){
        $num.after('<span class="required">*</span>');
        alert("Number required!");
    } else if(length && !checked){
        $checkboxes.after('<span class="required">*</span>');
        alert("Check at least one checkbox.");
    }
}
$(document).ready(function(){
    $("[data-required]").change(required);
});

=)这会帮助您吗?

<form id='myForm'>
    <input type='checkbox' name='checkbox1' value='t' id='checkbox1' onchange='alertUser()' />
    <input type='checkbox' name='checkbox2' value='t' id='checkbox2' onchange='alertUser()' />
    <input type='text'     name='number'              id='number'    onchange='alertUser()'/>
</form>

<script type='text/javascrip>
    function alertUser() {
        var checked1 = $('#checkbox1').attr('checked');
        var checked2 = $('#checkbox2').attr('checked');
        var number   = $('#number').val();

        if ((checked1 == true || checked2 == true) && number == '') {
           alert('Number is required!');

        } else if (number != '' && (checked1 != true && checked2 != true)) {
           alert('One of the checkbox need to be checked!');

        }
    });
</script>

希望这可以使您对如何完成任务有所了解。 http://jsfiddle.net/NYn8e/8/

var $textbox = $('input[name=number]').hide();

$('input[type=checkbox]').change(function() {
    var $this = $(this); //store jquery object

    //get the other checkbox
    var $other= ($this.attr('name') === 'checkbox1') ? $('input[name=checkbox2]') : $('input[name=checkbox1]');

    if (!$other.is(':checked') && !$this.is(':checked')) {
        $textbox.val('').hide();
    } else{
        $textbox.show();
    }                          
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM