1

<select>只有在列表中选择了特定选项时,我才努力使输入字段成为必需。

例如:

<select id="model">
    <option value="model1">Model 1</option>
    <option value="model2">Model 2</option>
    <option value="model3">Model 3</option>
    <option value="model4">Model 4</option>
</select>

<input type="text" name="extra">

extra如果选择模型 2 或 3,则需要输入。

我该怎么做呢?

4

4 回答 4

0

那么你只能用javascript客户端做这么多。最终,您将不得不在服务器上强制执行此操作。要在不依赖浏览器特定实现或 HTML5 的情况下在客户端执行此操作,您需要使用onsubmit()事件处理程序手动检查您想要的值。

<form onsubmit="return validateFormData(this)">

还要确保为您的选择元素命名以方便使用:

<select id="model" name="model"></select>

然后在你的javascript中:

function validateFormData(oForm) {
    //Let's say that a value of 'model3' makes 'extra' required
    if(oForm.model.value=='model3') {
        if(oForm.extra.value=='') {
            //returning false will prevent the form from submitting
            return false;
        }
    }
}
于 2013-05-16T21:14:21.550 回答
0

这是一个完整的示例来演示如何使用 jQuery 来解决这两种情况。请注意,您必须像我在 head 标记中所做的那样包含对 jQuery 库的引用。您也可以将 javascript/jQuery 移动到一个单独的文件中,并通过引用简单地包含它。

现场示例(jsFiddle)在这里


<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
//alert('Document is ready');
                $('#model').change(function() {
                    var sel = $(this).val();
                    if (sel == 'model2' || sel == 'model3') $('input[name=extra]').show();
                });

                $('input[name=btn_submit]').click(function() {
                    var sel = $('#model').val();
                    if (sel == 'model2' || sel == 'model3') {
                        if ($('input[name=extra]').val() == '') {
                            alert('Please complete all fields');
                            return false; //prevent submit from submitting
                        }else{
                            alert('Your entry was submitted');
                        }
                    }else{
                        //Model is NOT 2 or 3 so don't check
                        alert('Your entry was submitted without checking input field value.');
                    }
                });
            });
        </script>
    </head>
<body>

    <select id="model">
        <option value="model1">Model 1</option>
        <option value="model2">Model 2</option>
        <option value="model3">Model 3</option>
        <option value="model4">Model 4</option>
    </select>

    <input type="text" name="extra" style="display:none">
    <input type="submit" name="btn_submit" value="Submit It">

</body>
</html>
于 2013-05-16T21:22:34.280 回答
0

选择某个选项时,您可以添加必需的类。然后在提交时检查所需的元素以确保它不为空

$('#model').change(function () {
    // check if it's model2 or model3
    var isRequired = /model2|model3/i.test(this.value);
    $('input[name=extra]').toggleClass('required',isRequired);    
});

$('form').submit(function(){
    // get all empty required fields
    var reqEmpty = $('.required').filter(function(){
       return $.trim(this.value).length === 0;
    });
    // if any empty required fields are found - do something
    if(reqEmpty.length){
        alert('empty required field');
        return false;
    }
});

小提琴中的红色边框只是在添加所需的类时向您显示。

小提琴

于 2013-05-16T21:22:40.713 回答
0

假设您正在尝试设置required 属性

$('#model').change(function(){
    var index = this.selectedIndex;
    $('input[name="extra"]').prop('required', function(){
        return index == 1 || index == 2;
    });
});

JS 小提琴演示

于 2013-05-16T21:51:20.450 回答